home *** CD-ROM | disk | FTP | other *** search
- /*******************************************************************************
- **
- ** Coded by Dino Papararo 23-Apr-1998
- **
- *******************************************************************************/
-
- #define __USE_SYSBASE
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <proto/exec.h>
- #include <proto/dos.h>
- #include <proto/intuition.h>
- #include <proto/diskfont.h>
- #include <proto/graphics.h>
- #include <proto/gadtools.h>
- #include <proto/utility.h>
- #include <proto/iffparse.h>
- #include <proto/icon.h>
- #include <proto/asl.h>
- #include <exec/execbase.h>
- #include <exec/memory.h>
- #include <intuition/intuition.h>
- #include <intuition/gadgetclass.h>
- #include <graphics/gfxbase.h>
- #include <graphics/videocontrol.h>
- #include <graphics/scale.h>
- #include <iffp/ilbmapp.h>
- #include <devices/prtbase.h>
- #include <devices/printer.h>
-
-
-
- /* To compile the FPU versions uncomment next line */
- // #define __USE_FPU
-
-
- #ifdef __USE_FPU
- #include <m68881.h>
- #else
- #include <mieeedoub.h>
- #endif
-
- #define VERSION "FlashMandel 1.0 "
- #define AUTHOR "Dino Papararo"
- #define DATE __AMIGADATE__
- #define COPYRIGHT "©1997"
- #define ADDRESS " Via Manzoni 184\n\n 80123 Napoli\n\n Italia\n\n"
- #define EMAIL " E-Mail: DinoP@IName.Com"
-
- #define INIT_DEF_RMIN -2.2
- #define INIT_DEF_RMAX +0.8
- #define INIT_DEF_IMIN -1.125
- #define INIT_DEF_IMAX +1.125
- #define INIT_DEF_RMINSTR "-2.2"
- #define INIT_DEF_RMAXSTR "+0.8"
- #define INIT_DEF_IMINSTR "-1.125"
- #define INIT_DEF_IMAXSTR "+1.125"
-
- #define DEF_WIDTH 640
- #define DEF_HEIGHT 480
- #define DEF_PLANES 4
- #define DEF_MONITOR 0x00008004
- #define DEF_MONITORSTR "0x00008004"
-
- #define MIN_WIDTH 640
- #define MIN_HEIGHT 480
- #define MAX_WIDTH 16368
- #define MAX_HEIGHT 16384
- #define MIN_DEPTH 3
- #define MAX_DEPTH 8
-
- #define RAW_ESC 0x045
- #define VAN_ESC 0x01B
- #define TAB 0x042
-
- #define FIXED_POINT (28L) /* Bit di Precisione */
- #define MAX_POT (1L << FIXED_POINT) /* 2^FIXED_POINT */
-
- #define MINLIMIT 2
-
- #define BLACK (0)
- #define LIGHT_GREY (2)
- #define WHITE (1)
- #define DARK_GREY (3)
-
- #define POINTS 4
- #define PAIRS 5
-
- #define MYSECS (50L << 1L)
-
- #define SHIFTRIGHT FALSE
- #define SHIFTLEFT TRUE
-
- #define INITIALZOOM 14
-
- #define ZPW 15
- #define ZPH 15
- #define ZPXO -8
- #define ZPYO -7
-
- #define ZZZPW 16
- #define ZZZPH 16
- #define ZZZPXO 0
- #define ZZZPYO 0
-
- #define MAXCHARS 85
-
- #define ACCEPT (1)
- #define RATIO (2)
- #define RESET (3)
- #define CANCEL (4)
- #define KEEP (5)
-
- #define WMASK 0x1
- #define FMASK 0x2
- #define VMASK 0x4
- #define SMASK 0x8
- #define BMASK 0x10
- #define ZMASK 0x20
- #define TMASK 0x40
-
- #define SPREAD_BIT (1L << 16)
- #define INTEGER_BIT (1L << 17)
- #define TITLE_BIT (1L << 18)
-
- #define LOADPICTURE_MSG 0x1
- #define SAVEPICTURE_MSG 0x2
- #define DUMP_MSG 0x4
- #define REDRAW_MSG 0x8
- #define UNDO_MSG 0x10
- #define DRAW_MSG 0x20
- #define PREVIEW_MSG 0x40
- #define NEWDISPLAY_MSG 0x80
- #define STOP_MSG 0x100
- #define EXIT_MSG 0x200
- #define COORDS_MSG 0x400
- #define ITER_MSG 0x800
- #define ABOUT_MSG 0x1000
- #define TITLE_MSG 0x2000
- #define TIME_MSG 0x4000
- #define PALETTE_MSG 0x8000
- #define CYCLERIGHT_MSG 0x10000
- #define CYCLELEFT_MSG 0x20000
- #define DELAY_MSG 0x40000
- #define COLOR_MSG 0x80000
- #define LOADPALETTE_MSG 0x100000
- #define SAVEPALETTE_MSG 0x200000
- #define FONTREQ_MSG 0x400000
-
- #define PICTURES_DRAWER 0
- #define PALETTES_DRAWER 1
-
- #define IDCMP_STANDARD IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_MOUSEBUTTONS|IDCMP_MOUSEMOVE|IDCMP_MENUPICK
-
- #define WFLG_STANDARD WFLG_ACTIVATE|WFLG_BACKDROP|WFLG_NOCAREREFRESH|WFLG_SMART_REFRESH|WFLG_BORDERLESS|WFLG_REPORTMOUSE|WFLG_NEWLOOKMENUS
-
- #define TEXT_ALERT_POS "\x00\x90\x10 FlashMandel message: "
-
- #define MODE_ID_MASK (LACE|HIRES|HAM|EXTRA_HALFBRITE)
-
- #define ID_MAND MAKE_ID('M','A','N','D')
-
- struct MandelChunk { WORD LeftEdge,TopEdge,Width,Height;
- long double RMin,RMax,IMin,IMax;
- long double RConst,IConst;
- ULONG Iterations;
- ULONG Special;
- };
-
- IMPORT struct ExecBase *SysBase;
-
- TEXT VERSION_STRING [] = "\0$VER: " VERSION DATE "\r\n by " AUTHOR;
-
- TEXT MYFILE [80],PICTURESDIR [220],PALETTESDIR [220],MYPATH [300],BAR_STRING [80],*MYDIR = NULL;
-
- BOOL SPREAD = TRUE;
-
- WORD ZOOMLINE [PAIRS << 1] , PRIORITY = 0 , MAX_ITERATIONS = 319;
-
- UWORD MAX_ITERATIONS_PLUS_ONE;
-
- LONG __oslibversion = 39L;
-
- ULONG RETURNVALUE = NULL,MASK = TMASK;
-
- ULONG ELAPSEDTIME = NULL,DELAY = 5L,COLOR_PENS;
-
- long double RMIN=INIT_DEF_RMIN,RMAX=INIT_DEF_RMAX,IMIN=INIT_DEF_IMIN,IMAX=INIT_DEF_IMAX;
-
- long double DEF_RMIN,DEF_RMAX,DEF_IMIN,DEF_IMAX,URMIN,URMAX,UIMIN,UIMAX;
-
- long double FACTOR=0.0,INCREMREAL=0.0,INCREMIMAG=0.0,CRE=0.0,CIM=0.0;
-
- ULONG *PALETTE;
-
- WORD (*FUNCTION) (WORD,long double,long double);
-
- VOID (*V_LINE) (struct RastPort *,const LONG,const LONG,const LONG);
-
- VOID (*H_LINE) (struct RastPort *,const LONG,const LONG,const LONG);
-
- CPTR *VINFO = NULL;
-
- UBYTE *OpenDisplayError = TEXT_ALERT_POS "I need at least 8 colors, sorry." "\x00";
- UBYTE *FontError = TEXT_ALERT_POS "Font failed" "\x00";
- UBYTE *NoMonitor = TEXT_ALERT_POS "No monitor" "\x00";
- UBYTE *NoChips = TEXT_ALERT_POS "No chips" "\x00";
- UBYTE *NoMem = TEXT_ALERT_POS "No mem" "\x00";
- UBYTE *NoChipMem = TEXT_ALERT_POS "No chipmem" "\x00";
- UBYTE *PubNotUnique = TEXT_ALERT_POS "Pub not unique" "\x00";
- UBYTE *UnknownMode = TEXT_ALERT_POS "Unknown mode" "\x00";
- UBYTE *ScreenTooDeep = TEXT_ALERT_POS "Screen too deep" "\x00";
- UBYTE *AttachScreen = TEXT_ALERT_POS "Attach screen failed" "\x00";
- UBYTE *ModeNotAvailableError = TEXT_ALERT_POS "Mode not available" "\x00";
- UBYTE *UnknownScrError = TEXT_ALERT_POS "Unknown screen error" "\x00";
- UBYTE *VisualInfoError = TEXT_ALERT_POS "Visualinfo failed" "\x00";
- UBYTE *WindowError = TEXT_ALERT_POS "Openwindow failed" "\x00";
- UBYTE *MenuError = TEXT_ALERT_POS "Menu failed" "\x00";
- UBYTE *GadgetError = TEXT_ALERT_POS "Gadget error" "\x00";
- UBYTE *WindowGadgetError = TEXT_ALERT_POS "Window gadget error" "\x00";
- UBYTE *PreviewWindowError = TEXT_ALERT_POS "Preview window failed" "\x00";
- UBYTE *CreateDisplayError = TEXT_ALERT_POS "Createdisplay error" "\x00";
- UBYTE *DimensionInfoError = TEXT_ALERT_POS "Dimensioninfo error" "\x00";
- UBYTE *DisplayInfoError = TEXT_ALERT_POS "Displayinfo error" "\x00";
- UBYTE *PaletteRequesterError = TEXT_ALERT_POS "Palette requester error" "\x00";
- UBYTE *OpenDiskFontError = TEXT_ALERT_POS "Selected font not loaded" "\x00";
- UBYTE *MakeDisplayError = TEXT_ALERT_POS "Display error" "\x00";
- UBYTE *QueryMandPicError = TEXT_ALERT_POS "Not a FlashMandel picture !" "\x00";
- UBYTE *LoadMandPicError = TEXT_ALERT_POS "Load picture error" "\x00";
- UBYTE *SaveMandPicError = TEXT_ALERT_POS "Save picture error" "\x00";
-
- VOID PutPointer (struct Window *,UWORD *,WORD,WORD,WORD,WORD,UBYTE);
- VOID ClipIt (WORD,WORD,struct Rectangle *,struct Rectangle *,struct Rectangle *,struct Rectangle *,struct Rectangle *,struct Rectangle *,BOOL);
- ULONG ModeFallBack (ULONG,WORD,WORD,WORD);
- LONG About (struct Window *);
- LONG Choice (struct Window *,TEXT *,TEXT *);
- LONG CheckGFX (VOID);
- BOOL CheckEHB (ULONG);
- UBYTE GetMaxPlanes (ULONG);
- ULONG CheckFPU (UWORD);
- VOID AdjustRatio (long double *,long double *,long double *,long double *,WORD,WORD,BOOL);
- WORD Integer (WORD,long double,long double);
- WORD Real (WORD,long double,long double);
- VOID ShowTime (struct Window *,TEXT *,ULONG);
- ULONG IntegerGad (struct Window *,TEXT *,TEXT *,TEXT *,ULONG);
- VOID CloseDisplay (struct ILBMInfo *,CPTR *);
- LONG MakeDisplay (struct ILBMInfo *);
- VOID VLine_R_EHB (struct RastPort *,const LONG,const LONG,const LONG);
- VOID HLine_R_EHB (struct RastPort *,const LONG,const LONG,const LONG);
- VOID VLine_S_EHB (struct RastPort *,const LONG,const LONG,const LONG);
- VOID HLine_S_EHB (struct RastPort *,const LONG,const LONG,const LONG);
- VOID VLine_R (struct RastPort *,const LONG,const LONG,const LONG);
- VOID HLine_R (struct RastPort *,const LONG,const LONG,const LONG);
- VOID VLine_S (struct RastPort *,const LONG,const LONG,const LONG);
- VOID HLine_S (struct RastPort *,const LONG,const LONG,const LONG);
- BOOL CheckBox (struct RastPort *,const LONG,const LONG,const LONG,const LONG);
- BOOL Rectangle (struct Window *,const LONG,const LONG,const LONG,const LONG);
- BOOL NewCoords (struct Window *,const LONG,const LONG,const LONG,const LONG);
- BOOL DrawFrame (struct Window *,WORD,WORD,WORD,WORD);
- ULONG DrawFractal (struct Window *,const LONG,const LONG,const LONG,const LONG);
- BOOL Preview (struct Window *,const LONG,const LONG);
- BOOL ShowCoords (struct Window *);
- VOID RestoreCoords (VOID);
- VOID SaveCoords (VOID);
- BOOL FileRequest (struct Window *,TEXT *,TEXT *,BOOL,BOOL);
- BOOL FontRequest (struct Window *);
- BOOL SMRequest (struct ILBMInfo *);
- VOID SetMenuStart (struct Window *);
- VOID SetMenuStop (struct Window *);
- ULONG ProcessMenu (struct Window *,UWORD);
- VOID ProcessMouse (struct Window *,WORD,WORD);
- ULONG HandleEvents (struct ILBMInfo *);
- LONG WinDump (struct Window *);
- ULONG Fail (UBYTE *,ULONG);
- BOOL PasteWin (struct BitMap *,struct Window *,WORD,WORD);
- LONG main (ULONG,UBYTE **);
-
- LONG __asm __interrupt __saveds SMFilterFunc (register __a0 struct Hook *,register __a1 ULONG,register __a2 struct ScreenModeRequester *);
-
- struct Screen *OpenIdScreen (struct ILBMInfo *,WORD,WORD,WORD,ULONG);
- struct Window *OpenDisplay (struct ILBMInfo *,WORD,WORD,WORD,ULONG);
- struct BitMap *CopyBitMap (struct Window *,WORD,WORD,WORD,WORD);
-
- struct Hook SMFILTERHOOK = {NULL,NULL,(VOID *) SMFilterFunc,NULL};
-
- struct Border MYBORDER = {0,0,0,0,COMPLEMENT,PAIRS,ZOOMLINE,0};
-
- struct TextAttr MYFONTSTRUCT = {"topaz.font",8,FS_NORMAL,FPF_ROMFONT};
-
- struct NewGadget TEXTGAD = {0,0,0,0,0,&MYFONTSTRUCT,0,0,0,0};
-
- struct NewGadget BUTTONGAD = {0,0,0,0,0,&MYFONTSTRUCT,0,0,0,0};
-
- struct NewGadget CHECKBOXGAD = {0,0,0,0,0,&MYFONTSTRUCT,0,0,0,0};
-
- struct BitScaleArgs BSA = {0,0,0,0,0,0,0,0,0,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL};
-
- struct Chunk COPYRIGHT_CHUNK = {NULL,ID_ILBM,ID_Copyright,IFFSIZE_UNKNOWN,"\n\n" VERSION COPYRIGHT " by " AUTHOR "\n\n"};
-
- struct Chunk SPECIAL_CHUNK = {NULL,ID_ILBM,ID_MAND,sizeof (struct MandelChunk),NULL};
-
- UWORD PENS [] = {BLACK,DARK_GREY,WHITE,WHITE,DARK_GREY,LIGHT_GREY,DARK_GREY,LIGHT_GREY,DARK_GREY,WHITE,LIGHT_GREY,DARK_GREY,(UWORD) ~0};
-
- /*
-
- 01 0 DETAILPEN SFONDO
- 02 1 BLOCKPEN TESTO
- 03 1 TEXTPEN TESTO EVIDENZIATO
- 04 2 SHINEPEN BORDI CHIARI
- 05 1 SHADOWPEN BORDI SCURI
- 06 3 FILLPEN BARRA TITOLO FINESTRE ATTIVE
- 07 1 FILLTEXTPEN TITOLO FINESTRE ATTIVE
- 08 0 BACKGROUNDPEN
- 09 2 HIGHLIGHTTEXTPEN
-
- 10 1 BARDETAILPEN TESTO NEI MENU
- 11 2 BARBLOCKPEN SFONDO NEI MENU
- 12 1 BARTRIMPEN
-
- */
-
- ULONG COLORS_32_ECS [] = {32L << 16L,
- 0x00000000,0x00000000,0x00000000,
- 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
- 0xAAAAAAAA,0xAAAAAAAA,0xAAAAAAAA,
- 0x66666666,0x66666666,0x66666666,
- 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
- 0xBBBBBBBB,0xBBBBBBBB,0xBBBBBBBB,
- 0x77777777,0x77777777,0x77777777,
- 0x33333333,0x33333333,0x33333333,
- 0x33333333,0x33333333,0x00000000,
- 0x77777777,0x77777777,0x00000000,
- 0xBBBBBBBB,0xBBBBBBBB,0x00000000,
- 0xFFFFFFFF,0xFFFFFFFF,0x00000000,
- 0x00000000,0xFFFFFFFF,0x00000000,
- 0x00000000,0xBBBBBBBB,0x00000000,
- 0x00000000,0x77777777,0x00000000,
- 0x00000000,0x33333333,0x00000000,
- 0x33333333,0x00000000,0x33333333,
- 0x77777777,0x00000000,0x77777777,
- 0xBBBBBBBB,0x00000000,0xBBBBBBBB,
- 0xFFFFFFFF,0x00000000,0xFFFFFFFF,
- 0xFFFFFFFF,0x00000000,0x00000000,
- 0xBBBBBBBB,0x00000000,0x00000000,
- 0x77777777,0x00000000,0x00000000,
- 0x33333333,0x00000000,0x00000000,
- 0x00000000,0x33333333,0x33333333,
- 0x00000000,0x77777777,0x77777777,
- 0x00000000,0xBBBBBBBB,0xBBBBBBBB,
- 0x00000000,0xFFFFFFFF,0xFFFFFFFF,
- 0x00000000,0x00000000,0xFFFFFFFF,
- 0x00000000,0x00000000,0xBBBBBBBB,
- 0x00000000,0x00000000,0x77777777,
- 0x00000000,0x00000000,0x33333333,
- NULL};
-
- ULONG COLORS_32_AGA [] = {256L << 16L,
- 0x00000000,0x00000000,0x00000000, 0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF, 0xAAAAAAAA,0xAAAAAAAA,0xAAAAAAAA, 0x66666666,0x66666666,0x66666666,
- 0x9f9f9f9f,0x9f9f9f9f,0x9f9f9f9f, 0xafafafaf,0xafafafaf,0xafafafaf, 0xbfbfbfbf,0xbfbfbfbf,0xbfbfbfbf, 0xcfcfcfcf,0xcfcfcfcf,0xcfcfcfcf,
- 0xdfdfdfdf,0xdfdfdfdf,0xdfdfdfdf, 0xefefefef,0xefefefef,0xefefefef, 0xdfdfdfdf,0xefefefef,0xffffffff, 0xcfcfcfcf,0xdfdfdfdf,0xefefefef,
- 0xbfbfbfbf,0xcfcfcfcf,0xdfdfdfdf, 0xafafafaf,0xbfbfbfbf,0xcfcfcfcf, 0x9f9f9f9f,0xafafafaf,0xbfbfbfbf, 0x8f8f8f8f,0x9f9f9f9f,0xafafafaf,
- 0x7f7f7f7f,0x8f8f8f8f,0x9f9f9f9f, 0x6f6f6f6f,0x7f7f7f7f,0x8f8f8f8f, 0x5f5f5f5f,0x6f6f6f6f,0x7f7f7f7f, 0x4f4f4f4f,0x5f5f5f5f,0x6f6f6f6f,
- 0x3f3f3f3f,0x4f4f4f4f,0x5f5f5f5f, 0x2f2f2f2f,0x3f3f3f3f,0x4f4f4f4f, 0x1f1f1f1f,0x2f2f2f2f,0x3f3f3f3f, 0x0f0f0f0f,0x1f1f1f1f,0x2f2f2f2f,
- 0x00000000,0x0f0f0f0f,0x1f1f1f1f, 0x1f1f1f1f,0x0f0f0f0f,0x1f1f1f1f, 0x2f2f2f2f,0x1f1f1f1f,0x2f2f2f2f, 0x3f3f3f3f,0x2f2f2f2f,0x3f3f3f3f,
- 0x4f4f4f4f,0x3f3f3f3f,0x4f4f4f4f, 0x5f5f5f5f,0x4f4f4f4f,0x5f5f5f5f, 0x6f6f6f6f,0x5f5f5f5f,0x6f6f6f6f, 0x7f7f7f7f,0x6f6f6f6f,0x7f7f7f7f,
- 0x8f8f8f8f,0x7f7f7f7f,0x8f8f8f8f, 0x9f9f9f9f,0x8f8f8f8f,0x9f9f9f9f, 0xafafafaf,0x9f9f9f9f,0xafafafaf, 0xbfbfbfbf,0xafafafaf,0xbfbfbfbf,
- 0xcfcfcfcf,0xbfbfbfbf,0xcfcfcfcf, 0xdfdfdfdf,0xcfcfcfcf,0xdfdfdfdf, 0xefefefef,0xdfdfdfdf,0xefefefef, 0xffffffff,0xefefefef,0xffffffff,
- 0xefefefef,0xffffffff,0xefefefef, 0xdfdfdfdf,0xefefefef,0xdfdfdfdf, 0xcfcfcfcf,0xdfdfdfdf,0xcfcfcfcf, 0xbfbfbfbf,0xcfcfcfcf,0xbfbfbfbf,
- 0xafafafaf,0xbfbfbfbf,0xafafafaf, 0x9f9f9f9f,0xafafafaf,0x9f9f9f9f, 0x8f8f8f8f,0x9f9f9f9f,0x8f8f8f8f, 0x7f7f7f7f,0x8f8f8f8f,0x7f7f7f7f,
- 0x6f6f6f6f,0x7f7f7f7f,0x6f6f6f6f, 0x5f5f5f5f,0x6f6f6f6f,0x5f5f5f5f, 0x4f4f4f4f,0x5f5f5f5f,0x4f4f4f4f, 0x3f3f3f3f,0x4f4f4f4f,0x3f3f3f3f,
- 0x2f2f2f2f,0x3f3f3f3f,0x2f2f2f2f, 0x1f1f1f1f,0x2f2f2f2f,0x1f1f1f1f, 0x0f0f0f0f,0x1f1f1f1f,0x0f0f0f0f, 0x0f0f0f0f,0x1f1f1f1f,0x1f1f1f1f,
- 0x1f1f1f1f,0x2f2f2f2f,0x2f2f2f2f, 0x2f2f2f2f,0x3f3f3f3f,0x3f3f3f3f, 0x3f3f3f3f,0x4f4f4f4f,0x4f4f4f4f, 0x4f4f4f4f,0x5f5f5f5f,0x5f5f5f5f,
- 0x5f5f5f5f,0x6f6f6f6f,0x6f6f6f6f, 0x6f6f6f6f,0x7f7f7f7f,0x7f7f7f7f, 0x7f7f7f7f,0x8f8f8f8f,0x8f8f8f8f, 0x8f8f8f8f,0x9f9f9f9f,0x9f9f9f9f,
- 0x9f9f9f9f,0xafafafaf,0xafafafaf, 0xafafafaf,0xbfbfbfbf,0xbfbfbfbf, 0xbfbfbfbf,0xcfcfcfcf,0xcfcfcfcf, 0xcfcfcfcf,0xdfdfdfdf,0xdfdfdfdf,
- 0xdfdfdfdf,0xefefefef,0xefefefef, 0xefefefef,0xffffffff,0xffffffff, 0xffffffff,0xefefefef,0xefefefef, 0xefefefef,0xdfdfdfdf,0xdfdfdfdf,
- 0xdfdfdfdf,0xcfcfcfcf,0xcfcfcfcf, 0xcfcfcfcf,0xbfbfbfbf,0xbfbfbfbf, 0xbfbfbfbf,0xafafafaf,0xafafafaf, 0xafafafaf,0x9f9f9f9f,0x9f9f9f9f,
- 0x9f9f9f9f,0x8f8f8f8f,0x8f8f8f8f, 0x8f8f8f8f,0x7f7f7f7f,0x7f7f7f7f, 0x7f7f7f7f,0x6f6f6f6f,0x6f6f6f6f, 0x6f6f6f6f,0x5f5f5f5f,0x5f5f5f5f,
- 0x5f5f5f5f,0x4f4f4f4f,0x4f4f4f4f, 0x4f4f4f4f,0x3f3f3f3f,0x3f3f3f3f, 0x3f3f3f3f,0x2f2f2f2f,0x2f2f2f2f, 0x2f2f2f2f,0x1f1f1f1f,0x1f1f1f1f,
- 0x1f1f1f1f,0x0f0f0f0f,0x0f0f0f0f, 0x1f1f1f1f,0x1f1f1f1f,0x0f0f0f0f, 0x2f2f2f2f,0x2f2f2f2f,0x1f1f1f1f, 0x3f3f3f3f,0x3f3f3f3f,0x2f2f2f2f,
- 0x4f4f4f4f,0x4f4f4f4f,0x3f3f3f3f, 0x5f5f5f5f,0x5f5f5f5f,0x4f4f4f4f, 0x6f6f6f6f,0x6f6f6f6f,0x5f5f5f5f, 0x7f7f7f7f,0x7f7f7f7f,0x6f6f6f6f,
- 0x8f8f8f8f,0x8f8f8f8f,0x7f7f7f7f, 0x9f9f9f9f,0x9f9f9f9f,0x8f8f8f8f, 0xafafafaf,0xafafafaf,0x9f9f9f9f, 0xbfbfbfbf,0xbfbfbfbf,0xafafafaf,
- 0xcfcfcfcf,0xcfcfcfcf,0xbfbfbfbf, 0xdfdfdfdf,0xdfdfdfdf,0xcfcfcfcf, 0xefefefef,0xefefefef,0xdfdfdfdf, 0xffffffff,0xffffffff,0xefefefef,
- 0xefefefef,0xefefefef,0xffffffff, 0xdfdfdfdf,0xdfdfdfdf,0xefefefef, 0xcfcfcfcf,0xcfcfcfcf,0xdfdfdfdf, 0xbfbfbfbf,0xbfbfbfbf,0xcfcfcfcf,
- 0xafafafaf,0xafafafaf,0xbfbfbfbf, 0x9f9f9f9f,0x9f9f9f9f,0xafafafaf, 0x8f8f8f8f,0x8f8f8f8f,0x9f9f9f9f, 0x7f7f7f7f,0x7f7f7f7f,0x8f8f8f8f,
- 0x6f6f6f6f,0x6f6f6f6f,0x7f7f7f7f, 0x5f5f5f5f,0x5f5f5f5f,0x6f6f6f6f, 0x4f4f4f4f,0x4f4f4f4f,0x5f5f5f5f, 0x3f3f3f3f,0x3f3f3f3f,0x4f4f4f4f,
- 0x2f2f2f2f,0x2f2f2f2f,0x3f3f3f3f, 0x1f1f1f1f,0x1f1f1f1f,0x2f2f2f2f, 0x0f0f0f0f,0x0f0f0f0f,0x1f1f1f1f, 0x0f0f0f0f,0x0f0f0f0f,0x00000000,
- 0x1f1f1f1f,0x1f1f1f1f,0x00000000, 0x2f2f2f2f,0x2f2f2f2f,0x00000000, 0x3f3f3f3f,0x3f3f3f3f,0x00000000, 0x4f4f4f4f,0x4f4f4f4f,0x00000000,
- 0x5f5f5f5f,0x5f5f5f5f,0x00000000, 0x6f6f6f6f,0x6f6f6f6f,0x00000000, 0x7f7f7f7f,0x7f7f7f7f,0x00000000, 0x8f8f8f8f,0x8f8f8f8f,0x00000000,
- 0x9f9f9f9f,0x9f9f9f9f,0x00000000, 0xafafafaf,0xafafafaf,0x00000000, 0xbfbfbfbf,0xbfbfbfbf,0x00000000, 0xcfcfcfcf,0xcfcfcfcf,0x00000000,
- 0xdfdfdfdf,0xdfdfdfdf,0x00000000, 0xefefefef,0xefefefef,0x00000000, 0xffffffff,0xffffffff,0x00000000, 0xefefefef,0xffffffff,0x00000000,
- 0xdfdfdfdf,0xffffffff,0x00000000, 0xcfcfcfcf,0xffffffff,0x00000000, 0xbfbfbfbf,0xffffffff,0x00000000, 0xafafafaf,0xffffffff,0x00000000,
- 0x9f9f9f9f,0xffffffff,0x00000000, 0x8f8f8f8f,0xffffffff,0x00000000, 0x7f7f7f7f,0xffffffff,0x00000000, 0x6f6f6f6f,0xffffffff,0x00000000,
- 0x5f5f5f5f,0xffffffff,0x00000000, 0x4f4f4f4f,0xffffffff,0x00000000, 0x3f3f3f3f,0xffffffff,0x00000000, 0x2f2f2f2f,0xffffffff,0x00000000,
- 0x1f1f1f1f,0xffffffff,0x00000000, 0x0f0f0f0f,0xffffffff,0x00000000, 0x00000000,0xffffffff,0x00000000, 0x00000000,0xefefefef,0x00000000,
- 0x00000000,0xdfdfdfdf,0x00000000, 0x00000000,0xcfcfcfcf,0x00000000, 0x00000000,0xbfbfbfbf,0x00000000, 0x00000000,0xafafafaf,0x00000000,
- 0x00000000,0x9f9f9f9f,0x00000000, 0x00000000,0x8f8f8f8f,0x00000000, 0x00000000,0x7f7f7f7f,0x00000000, 0x00000000,0x6f6f6f6f,0x00000000,
- 0x00000000,0x5f5f5f5f,0x00000000, 0x00000000,0x4f4f4f4f,0x00000000, 0x00000000,0x3f3f3f3f,0x00000000, 0x00000000,0x2f2f2f2f,0x00000000,
- 0x00000000,0x1f1f1f1f,0x00000000, 0x00000000,0x0f0f0f0f,0x00000000, 0x0f0f0f0f,0x00000000,0x0f0f0f0f, 0x1f1f1f1f,0x00000000,0x1f1f1f1f,
- 0x2f2f2f2f,0x00000000,0x2f2f2f2f, 0x3f3f3f3f,0x00000000,0x3f3f3f3f, 0x4f4f4f4f,0x00000000,0x4f4f4f4f, 0x5f5f5f5f,0x00000000,0x5f5f5f5f,
- 0x6f6f6f6f,0x00000000,0x6f6f6f6f, 0x7f7f7f7f,0x00000000,0x7f7f7f7f, 0x8f8f8f8f,0x00000000,0x8f8f8f8f, 0x9f9f9f9f,0x00000000,0x9f9f9f9f,
- 0xafafafaf,0x00000000,0xafafafaf, 0xbfbfbfbf,0x00000000,0xbfbfbfbf, 0xcfcfcfcf,0x00000000,0xcfcfcfcf, 0xdfdfdfdf,0x00000000,0xdfdfdfdf,
- 0xefefefef,0x00000000,0xefefefef, 0xffffffff,0x00000000,0xffffffff, 0xffffffff,0x00000000,0xefefefef, 0xffffffff,0x00000000,0xdfdfdfdf,
- 0xffffffff,0x00000000,0xcfcfcfcf, 0xffffffff,0x00000000,0xbfbfbfbf, 0xffffffff,0x00000000,0xafafafaf, 0xffffffff,0x00000000,0x9f9f9f9f,
- 0xffffffff,0x00000000,0x8f8f8f8f, 0xffffffff,0x00000000,0x7f7f7f7f, 0xffffffff,0x00000000,0x6f6f6f6f, 0xffffffff,0x00000000,0x5f5f5f5f,
- 0xffffffff,0x00000000,0x4f4f4f4f, 0xffffffff,0x00000000,0x3f3f3f3f, 0xffffffff,0x00000000,0x2f2f2f2f, 0xffffffff,0x00000000,0x1f1f1f1f,
- 0xffffffff,0x00000000,0x0f0f0f0f, 0xffffffff,0x00000000,0x00000000, 0xefefefef,0x00000000,0x00000000, 0xdfdfdfdf,0x00000000,0x00000000,
- 0xcfcfcfcf,0x00000000,0x00000000, 0xbfbfbfbf,0x00000000,0x00000000, 0xafafafaf,0x00000000,0x00000000, 0x9f9f9f9f,0x00000000,0x00000000,
- 0x8f8f8f8f,0x00000000,0x00000000, 0x7f7f7f7f,0x00000000,0x00000000, 0x6f6f6f6f,0x00000000,0x00000000, 0x5f5f5f5f,0x00000000,0x00000000,
- 0x4f4f4f4f,0x00000000,0x00000000, 0x3f3f3f3f,0x00000000,0x00000000, 0x2f2f2f2f,0x00000000,0x00000000, 0x1f1f1f1f,0x00000000,0x00000000,
- 0x0f0f0f0f,0x00000000,0x00000000, 0x00000000,0x0f0f0f0f,0x0f0f0f0f, 0x00000000,0x1f1f1f1f,0x1f1f1f1f, 0x00000000,0x2f2f2f2f,0x2f2f2f2f,
- 0x00000000,0x3f3f3f3f,0x3f3f3f3f, 0x00000000,0x4f4f4f4f,0x4f4f4f4f, 0x00000000,0x5f5f5f5f,0x5f5f5f5f, 0x00000000,0x6f6f6f6f,0x6f6f6f6f,
- 0x00000000,0x7f7f7f7f,0x7f7f7f7f, 0x00000000,0x8f8f8f8f,0x8f8f8f8f, 0x00000000,0x9f9f9f9f,0x9f9f9f9f, 0x00000000,0xafafafaf,0xafafafaf,
- 0x00000000,0xbfbfbfbf,0xbfbfbfbf, 0x00000000,0xcfcfcfcf,0xcfcfcfcf, 0x00000000,0xdfdfdfdf,0xdfdfdfdf, 0x00000000,0xefefefef,0xefefefef,
- 0x00000000,0xffffffff,0xffffffff, 0x00000000,0xefefefef,0xffffffff, 0x00000000,0xdfdfdfdf,0xffffffff, 0x00000000,0xcfcfcfcf,0xffffffff,
- 0x00000000,0xbfbfbfbf,0xffffffff, 0x00000000,0xafafafaf,0xffffffff, 0x00000000,0x9f9f9f9f,0xffffffff, 0x00000000,0x8f8f8f8f,0xffffffff,
- 0x00000000,0x7f7f7f7f,0xffffffff, 0x00000000,0x6f6f6f6f,0xffffffff, 0x00000000,0x5f5f5f5f,0xffffffff, 0x00000000,0x4f4f4f4f,0xffffffff,
- 0x00000000,0x3f3f3f3f,0xffffffff, 0x00000000,0x2f2f2f2f,0xffffffff, 0x00000000,0x1f1f1f1f,0xffffffff, 0x00000000,0x0f0f0f0f,0xffffffff,
- 0x00000000,0x00000000,0xffffffff, 0x00000000,0x00000000,0xefefefef, 0x00000000,0x00000000,0xdfdfdfdf, 0x00000000,0x00000000,0xcfcfcfcf,
- 0x00000000,0x00000000,0xbfbfbfbf, 0x00000000,0x00000000,0xafafafaf, 0x00000000,0x00000000,0x9f9f9f9f, 0x00000000,0x00000000,0x8f8f8f8f,
- 0x00000000,0x00000000,0x7f7f7f7f, 0x00000000,0x00000000,0x6f6f6f6f, 0x00000000,0x00000000,0x5f5f5f5f, 0x00000000,0x00000000,0x4f4f4f4f,
- 0x00000000,0x00000000,0x3f3f3f3f, 0x00000000,0x00000000,0x2f2f2f2f, 0x00000000,0x00000000,0x1f1f1f1f, 0x00000000,0x00000000,0x0f0f0f0f,
- NULL};
-
- UWORD chip ZZZPointer[] = {0x0000,0x0000,0x0400,0x07C0,0x0000,0x07C0,0x0100,0x0380,
- 0x0000,0x07E0,0x07C0,0x1FF8,0x1FF0,0x3FEC,0x3FF8,0x7FDE,
- 0x3FF8,0x7FBE,0x7FFC,0xFF7F,0x7EFC,0xFFFF,0x7FFC,0xFFFF,
- 0x3FF8,0x7FFE,0x3FF8,0x7FFE,0x1FF0,0x3FFC,0x07C0,0x1FF8,
- 0x0000,0x07E0,0x0000,0x0000};
-
- UWORD chip ZoomPointer[] = {0x0000,0x0000,0x0100,0x0000,0x0100,0x0000,0x0000,0x0100,
- 0x0000,0x0100,0x0100,0x0100,0x0100,0x0100,0x0000,0x0000,
- 0xCC66,0x3C78,0x0000,0x0000,0x0100,0x0100,0x0100,0x0100,
- 0x0000,0x0100,0x0000,0x0100,0x0100,0x0000,0x0100,0x0000,
- 0x0000,0x0000};
-
- struct NewMenu ProgMenu[] = { NM_TITLE,"Project",0,0,0,0,
-
- NM_ITEM,"About...","A",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Load picture...","L",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,"Save picture...","S",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,"Load palette...","K",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,"Save palette...","J",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Print...","D",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Quit...","Q",NM_ITEMDISABLED,0,0,
-
- /***************************************************************************************/
-
- NM_TITLE,"Options",0,0,0,0,
-
- NM_ITEM,"Title",0,NM_ITEMDISABLED,0,0,
- NM_SUB,"Title bar","O",CHECKIT|MENUTOGGLE|CHECKED,0,0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,"Last time","T",0,0,0,
-
- NM_ITEM,"Limits...","C",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,"Iterations",0,NM_ITEMDISABLED,0,0,
- NM_SUB,"64",0,CHECKIT,~(1<<0),0,
- NM_SUB,"128",0,CHECKIT,~(1<<1),0,
- NM_SUB,"192",0,CHECKIT,~(1<<2),0,
- NM_SUB,"256",0,CHECKIT,~(1<<3),0,
- NM_SUB,"320",0,CHECKIT|CHECKED,~(1<<4),0,
- NM_SUB,"384",0,CHECKIT,~(1<<5),0,
- NM_SUB,"448",0,CHECKIT,~(1<<6),0,
- NM_SUB,"512",0,CHECKIT,~(1<<7),0,
- NM_SUB,"1024",0,CHECKIT,~(1<<8),0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,"Custom...","I",CHECKIT,~(1<<10),0,
-
- NM_ITEM,"Priority",0,0,0,0,
- NM_SUB,"-5","%",CHECKIT,~(1<<0),0,
- NM_SUB,"-4","$",CHECKIT,~(1<<1),0,
- NM_SUB,"-3","£",CHECKIT,~(1<<2),0,
- NM_SUB,"-2","\"",CHECKIT,~(1<<3),0,
- NM_SUB,"-1","!",CHECKIT,~(1<<4),0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB," 0","0",CHECKIT|CHECKED,~(1<<6),0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,"+1","1",CHECKIT,~(1<<8),0,
- NM_SUB,"+2","2",CHECKIT,~(1<<9),0,
- NM_SUB,"+3","3",CHECKIT,~(1<<10),0,
- NM_SUB,"+4","4",CHECKIT,~(1<<11),0,
- NM_SUB,"+5","5",CHECKIT,~(1<<12),0,
-
- NM_ITEM,"Color mapping",0,0,0,0,
- NM_SUB,"Repeated",0,CHECKIT,~(1<<0),0,
- NM_SUB,"Spread",0,CHECKIT|CHECKED,~(1<<1),0,
-
- NM_ITEM,"Precision",0,0,0,0,
- NM_SUB,"Integer",0,CHECKIT|CHECKED,~(1<<0),0,
- NM_SUB,"Real",0,CHECKIT,~(1<<1),0,
-
- /***************************************************************************************/
-
- NM_TITLE,"Calculate",0,0,0,0,
-
- NM_ITEM,"PreView","W",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"ReCalculate","R",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Undo","U",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Zoom","Z",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,"Stop","X",0,0,0,
-
- /***************************************************************************************/
-
- NM_TITLE,"Video",0,0,0,0,
-
- NM_ITEM,"Cycle",0,NM_ITEMDISABLED,0,0,
- NM_SUB,"Forward",">",0,0,0,
- NM_SUB,"Backward","<",0,0,0,
- NM_SUB,NM_BARLABEL,0,0,0,0,
- NM_SUB,"Delay...","-",0,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Palette...","P",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Screen mode...","V",NM_ITEMDISABLED,0,0,
-
- NM_ITEM,NM_BARLABEL,0,0,0,0,
-
- NM_ITEM,"Font settings...","F",NM_ITEMDISABLED,0,0,
-
- NM_END,0,0,0,0,0 };
-
-
- struct Menu *MAINMENU = NULL;
-
- struct BitMap *MYBITMAP = NULL;
-
- struct Task *THISTASK = NULL;
-
- struct TextFont *NEWFONT = NULL;
-
- struct ILBMInfo MYILBM;
-
- struct MandelChunk MANDChunk;
-
- struct MandelChunk *MANDChunkTmp = NULL;
-
- LONG IlbmProps [] = { ID_ILBM, ID_BMHD, ID_ILBM, ID_CMAP, ID_ILBM, ID_CAMG, ID_ILBM, ID_MAND, TAG_END };
-
- LONG IlbmCollects [] = { TAG_END };
-
- LONG IlbmStops [] = { ID_ILBM, ID_BODY, TAG_END };
-
- #ifdef __USE_FPU
-
- IMPORT WORD __asm MandFPU (register __d0 WORD,register __fp0 long double,register __fp1 long double);
-
- #endif
-
- IMPORT WORD __asm MandINT (register __d0 WORD,register __d1 LONG,register __d2 LONG);
-
- IMPORT BOOL ModifyPalette (struct Window *,WORD,WORD,WORD,WORD,ULONG *);
-
- IMPORT BOOL Cycle (struct Window *,ULONG,BOOL);
-
- IMPORT LONG QueryMandPic (struct ILBMInfo *,struct MandelChunk **,UBYTE *);
-
- IMPORT LONG LoadMandPic (struct ILBMInfo *,UBYTE *);
-
- IMPORT LONG SaveMandPic (struct ILBMInfo *,struct Chunk *,struct Chunk *,UBYTE *);
-
- IMPORT LONG LoadPalette (struct ILBMInfo *,UBYTE *);
-
- IMPORT LONG SavePalette (struct ILBMInfo *,struct Chunk *,UBYTE *);
-
- VOID PutPointer (struct Window *Win,UWORD *PointerImage,WORD Width,WORD Height,WORD XOrigin,WORD YOrigin,UBYTE Type)
- {
- switch (Type)
- {
- case 0: SetWindowPointer (Win,TAG_END);
-
- break;
-
- case 1: SetWindowPointer (Win,WA_BusyPointer,TRUE,WA_PointerDelay,TRUE,TAG_END);
-
- break;
-
- default: SetPointer (Win,PointerImage,Height,Width,XOrigin,YOrigin);
- }
- }
-
- UBYTE GetMaxPlanes (ULONG ModeID)
- {
- DisplayInfoHandle DisplayHandle;
-
- struct DimensionInfo DimensionInfo;
-
- UBYTE Planes = 0;
-
- DisplayHandle = FindDisplayInfo (ModeID);
-
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DimensionInfo,sizeof (struct DimensionInfo),DTAG_DIMS,ModeID))
- {
- Planes = DimensionInfo.MaxDepth;
- }
-
- else Fail (DimensionInfoError,20L);
-
- return Planes;
- }
-
- LONG CheckGFX (VOID)
- {
- DisplayInfoHandle DisplayHandle;
-
- struct DisplayInfo DisplayInfo;
-
- BOOL AGA = FALSE,RTG = FALSE;
-
- ULONG ModeID = INVALID_ID;
-
- if (GetMaxPlanes (LORES_KEY) == MAX_DEPTH) AGA = TRUE;
-
- while (((ModeID = NextDisplayInfo (ModeID)) != INVALID_ID) && RTG == FALSE)
- {
- DisplayHandle = FindDisplayInfo (ModeID);
-
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DisplayInfo,sizeof (struct DisplayInfo),DTAG_DISP,ModeID))
- {
- if ((DisplayInfo.PropertyFlags & DIPF_IS_FOREIGN) && (GetMaxPlanes (ModeID) >= MAX_DEPTH)) RTG = TRUE;
- }
- }
-
- if (RTG && AGA) return 3L;
-
- if (RTG) return 2L;
-
- if (AGA) return 1L;
-
- return NULL;
- }
-
- BOOL CheckEHB (ULONG ModeID)
- {
- DisplayInfoHandle DisplayHandle;
-
- struct DisplayInfo DisplayInfo;
-
- BOOL IsEHB = FALSE;
-
- DisplayHandle = FindDisplayInfo (ModeID);
-
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DisplayInfo,sizeof (struct DisplayInfo),DTAG_DISP,ModeID))
- {
- if (DisplayInfo.PropertyFlags & DIPF_IS_EXTRAHALFBRITE) IsEHB = TRUE;
- }
-
- else Fail (DisplayInfoError,20L);
-
- return IsEHB;
- }
-
- ULONG CheckFPU (UWORD CpuFlags)
- {
- if (AFF_68060 & CpuFlags) return 68884L;
-
- if (AFF_FPU40 & CpuFlags) return 68883L;
-
- if (AFF_68882 & CpuFlags) return 68882L;
-
- if (AFF_68881 & CpuFlags) return 68881L;
-
- return NULL;
- }
-
- VOID CloseDisplay (struct ILBMInfo *Ilbm,CPTR *VInfo)
- {
- if (WMASK & MASK)
- {
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,0,0,0,0,0,0);
-
- CloseWindow (Ilbm->win);
-
- Ilbm->win = NULL;
-
- Ilbm->wrp = NULL;
-
- MASK ^= WMASK;
- }
-
- if (VMASK & MASK)
- {
- FreeVisualInfo (VInfo);
-
- MASK ^= VMASK;
- }
-
- if (SMASK & MASK)
- {
- CloseScreen (Ilbm->scr);
-
- Ilbm->scr = NULL;
-
- Ilbm->vp = NULL;
-
- Ilbm->srp = NULL;
-
- MASK ^= SMASK;
- }
-
- if (FMASK & MASK)
- {
- CloseFont (NEWFONT);
-
- MASK ^= FMASK;
- }
- }
-
- struct Window *OpenDisplay (struct ILBMInfo *Ilbm,WORD Width,WORD Height,WORD Depth,ULONG ModeID)
- {
- struct Screen *Scr;
-
- struct Window *Win = NULL;
-
- if (Scr = OpenIdScreen (Ilbm,Width,Height,Depth,ModeID))
- {
- Win = OpenWindowTags (NULL,
- WA_Left,Scr->LeftEdge,
- WA_Top,Scr->TopEdge,
- WA_Width,Scr->Width,
- WA_Height,Scr->Height,
- WA_ScreenTitle,VERSION,
- WA_CustomScreen,Scr,
- WA_MouseQueue,1L,
- WA_IDCMP,IDCMP_STANDARD,
- WA_Flags,WFLG_STANDARD,
- TAG_END);
-
- if (! Win)
- {
- if (Scr) CloseScreen (Scr);
-
- return NULL;
- }
-
- Ilbm->scr = Scr;
-
- Ilbm->win = Win;
-
- Ilbm->vp = &(Scr->ViewPort);
-
- Ilbm->srp = &(Scr->RastPort);
-
- Ilbm->wrp = Win->RPort;
-
- Ilbm->Bmhd.w = Ilbm->win->Width;
-
- Ilbm->Bmhd.h = Ilbm->win->Height;
-
- Ilbm->Bmhd.nPlanes = Ilbm->wrp->BitMap->Depth;
- }
-
- return (Win);
- }
-
- struct Screen *OpenIdScreen (struct ILBMInfo *Ilbm,WORD Width,WORD Height,WORD Depth,ULONG ModeID)
- {
- struct Rectangle Spos,DClip,TxtO,StdO,MaxO,UClip;
-
- struct Rectangle *UClipp;
-
- struct Screen *Scr;
-
- LONG ErrorCode = NULL,TryNew;
-
- ULONG BitMapTag,PassedTags;
-
- if (! Ilbm) return (NULL);
-
- TryNew = ((QueryOverscan (ModeID,&TxtO,OSCAN_TEXT)) && (QueryOverscan (ModeID,&StdO,OSCAN_STANDARD)) && (QueryOverscan (ModeID,&MaxO,OSCAN_MAX)));
-
- if (TryNew)
- {
- if (Ilbm->Video) Ilbm->ucliptype = OSCAN_VIDEO;
-
- if ((Ilbm->ucliptype) && (QueryOverscan (ModeID,&UClip,Ilbm->ucliptype))) UClipp = &UClip;
-
- else UClipp = NULL;
-
- ClipIt (Width,Height,&Spos,&DClip,&TxtO,&StdO,&MaxO,UClipp,Ilbm->IFFPFlags & IFFPF_NOCENTER ? TRUE : FALSE);
-
- BitMapTag = ((Ilbm->brbitmap) && (Ilbm->stype & CUSTOMBITMAP)) ? SA_BitMap : TAG_IGNORE;
-
- PassedTags = Ilbm->stags ? TAG_MORE : TAG_IGNORE;
-
- Scr = OpenScreenTags (NULL,
- SA_DisplayID, ModeID,
- SA_Type, Ilbm->stype,
- SA_Top, Spos.MinY,
- SA_Left, Spos.MinX,
- SA_Width, Width,
- SA_Height, Height,
- SA_Depth, Depth,
- SA_DClip, &DClip,
- SA_AutoScroll, Ilbm->Autoscroll,
- SA_Colors32, PALETTE,
- SA_Pens, PENS,
- SA_Interleaved, TRUE,
- SA_Font, &MYFONTSTRUCT,
- SA_Title, VERSION,
- SA_ErrorCode, &ErrorCode,
- SA_ShowTitle, Ilbm->TBState,
- BitMapTag, Ilbm->brbitmap,
- PassedTags, Ilbm->stags,
- TAG_END);
-
- if (! Scr)
- {
- switch (ErrorCode)
- {
- case OSERR_NOMONITOR : Fail (NoMonitor,20L);
-
- break;
-
- case OSERR_NOCHIPS : Fail (NoChips,20L);
-
- break;
-
- case OSERR_NOMEM : Fail (NoMem,20L);
-
- break;
-
- case OSERR_NOCHIPMEM : Fail (NoChipMem,20L);
-
- break;
-
- case OSERR_PUBNOTUNIQUE: Fail (PubNotUnique,20L);
-
- break;
-
- case OSERR_UNKNOWNMODE : Fail (UnknownMode,20L);
-
- break;
-
- case OSERR_TOODEEP : Fail (ScreenTooDeep,20L);
-
- break;
-
- case OSERR_ATTACHFAIL : Fail (AttachScreen,20L);
-
- break;
-
- case OSERR_NOTAVAILABLE: Fail (ModeNotAvailableError,20L);
-
- break;
-
- default : Fail (UnknownScrError,20L);
-
- break;
- }
-
- return NULL;
- }
- }
-
- else return NULL;
-
- if (Ilbm->Notransb)
- {
- VideoControlTags (Scr->ViewPort.ColorMap,VTAG_BORDERNOTRANS_SET,TRUE,TAG_END);
-
- MakeScreen (Scr);
-
- RethinkDisplay ();
- }
-
- return (Scr);
- }
-
- ULONG ModeFallBack (ULONG OldModeID,WORD Width,WORD Height,WORD Depth)
- {
- ULONG NewModeID = LORES_KEY,BestModeID;
-
- struct TagItem Tags [6];
-
- Tags [0].ti_Tag = BIDTAG_DIPFMustHave;
-
- Tags [0].ti_Data = (OldModeID & HAM ? DIPF_IS_HAM : 0);
-
- Tags [0].ti_Data |= (OldModeID & EXTRA_HALFBRITE ? DIPF_IS_EXTRAHALFBRITE : 0);
-
- Tags [1].ti_Tag = BIDTAG_NominalWidth;
-
- Tags [1].ti_Data = Width; // bmhd->XAspect; // wide;
-
- Tags [2].ti_Tag = BIDTAG_NominalHeight;
-
- Tags [2].ti_Data = Height; // bmhd->YAspectHeight; // high;
-
- Tags [3].ti_Tag = BIDTAG_Depth;
-
- Tags [3].ti_Data = Depth;
-
- Tags [4].ti_Tag = BIDTAG_SourceID;
-
- Tags [4].ti_Data = (FindDisplayInfo (OldModeID) ? OldModeID : (OldModeID & (~(MONITOR_ID_MASK|SPRITES|GENLOCK_AUDIO|GENLOCK_VIDEO|VP_HIDE))));
-
- Tags [5].ti_Tag = TAG_END;
-
- BestModeID = BestModeIDA (Tags);
-
- if (BestModeID != INVALID_ID) NewModeID = BestModeID;
-
- return (NewModeID);
- }
-
- VOID ClipIt (WORD wide,WORD high,struct Rectangle *spos,struct Rectangle *dclip,struct Rectangle *txto, struct Rectangle *stdo,struct Rectangle *maxo, struct Rectangle *uclip,BOOL NoCenter)
- {
- struct Rectangle *besto;
-
- WORD minx, maxx, miny, maxy;
-
- WORD txtw, txth, stdw, stdh, bestw, besth;
-
- /* get the txt, std and max widths and heights */
-
- txtw = txto->MaxX - txto->MinX + 1;
-
- txth = txto->MaxY - txto->MinY + 1;
-
- stdw = stdo->MaxX - stdo->MinX + 1;
-
- stdh = stdo->MaxY - stdo->MinY + 1;
-
- if ((wide <= txtw) && (high <= txth))
- {
- besto = txto;
-
- bestw = txtw;
-
- besth = txth;
- }
-
- else
- {
- besto = stdo;
-
- bestw = stdw;
-
- besth = stdh;
- }
-
- if (uclip)
- {
- *dclip = *uclip;
-
- spos->MinX = uclip->MinX;
-
- spos->MinY = uclip->MinY;
- }
-
- else
- {
- /* CENTER the screen based on best oscan prefs
- * but confine dclip within max oscan limits
- *
- * FIX MinX first */
-
- spos->MinX = minx = besto->MinX - ((wide - bestw) >> 1);
-
- maxx = wide + minx - 1;
-
- if (maxx > maxo->MaxX) maxx = maxo->MaxX; /* too right */
-
- if (minx < maxo->MinX)
- {
- minx = maxo->MinX; /* too left */
-
- /* if we want left edge of screen not clipped */
-
- if (NoCenter) spos->MinX = minx;
- }
-
- /* FIX MinY */
-
- spos->MinY = miny = besto->MinY - ((high - besth) >> 1);
-
- /* if lower than top of txto, move up */
-
- spos->MinY = miny = MIN (spos->MinY,txto->MinY);
-
- maxy = high + miny - 1;
-
- if (maxy > maxo->MaxY) maxy = maxo->MaxY; /* too down */
-
- if (miny < maxo->MinY)
- {
- miny = maxo->MinY; /* too up */
-
- /* if we want top of screen not clipped */
-
- if (NoCenter) spos->MinY = miny;
- }
-
- /* SET up dclip */
-
- dclip->MinX = minx;
-
- dclip->MinY = miny;
-
- dclip->MaxX = maxx;
-
- dclip->MaxY = maxy;
- }
- }
-
- LONG MakeDisplay (struct ILBMInfo *Ilbm)
- {
- if (Ilbm->IFFPFlags & IFFPF_USERMODE) Ilbm->camg = Ilbm->usermodeid;
-
- Ilbm->Bmhd.w = MAX (MIN_WIDTH,Ilbm->Bmhd.w);
-
- Ilbm->Bmhd.h = MAX (MIN_HEIGHT,Ilbm->Bmhd.h);
-
- Ilbm->Bmhd.nPlanes = MIN (MAX_DEPTH,MAX (MIN_DEPTH,Ilbm->Bmhd.nPlanes));
-
- if (ModeNotAvailable (Ilbm->camg) || (Ilbm->IFFPFlags & IFFPF_BESTFIT))
- {
- Ilbm->camg = ModeFallBack (Ilbm->camg,Ilbm->Bmhd.w,Ilbm->Bmhd.h,Ilbm->Bmhd.nPlanes);
-
- if (ModeNotAvailable (Ilbm->camg))
- {
- Fail (ModeNotAvailableError,20L);
-
- return NULL;
- }
- }
-
- if (! (OpenDisplay (Ilbm,MAX (Ilbm->Bmhd.pageWidth,Ilbm->Bmhd.w),MAX (Ilbm->Bmhd.pageHeight,Ilbm->Bmhd.h),Ilbm->Bmhd.nPlanes,Ilbm->camg))) return NULL;
-
- MASK |= SMASK;
-
- MASK |= WMASK;
-
- if (! (VINFO = GetVisualInfo (Ilbm->scr,TAG_END)))
- {
- Fail (VisualInfoError,20L);
-
- return NULL;
- }
-
- MASK |= VMASK;
-
- if (! (LayoutMenus (MAINMENU,VINFO,GTMN_TextAttr,&MYFONTSTRUCT,GTMN_NewLookMenus,TRUE,TAG_END)))
- {
- Fail (FontError,20L);
-
- return NULL;
- }
-
- SetMenuStrip (Ilbm->win,MAINMENU);
-
- return (Ilbm->vp->ColorMap->Count);
- }
-
- VOID ShowTime (struct Window *Win,TEXT *String,ULONG Secs)
- {
- sprintf (BAR_STRING,"%s %uh %um %us - Average speed: %.3lf Pix/sec",String,Secs / 3600L,(Secs / 60L) % 60L,Secs % 60L,(DOUBLE) ((Win->Width - Win->LeftEdge) * (Win->Height - Win->TopEdge)) / (DOUBLE) Secs);
-
- SetWindowTitles (Win,(TEXT *) ~0,BAR_STRING);
- }
-
- VOID SaveCoords (VOID)
- {
- URMIN = RMIN;
-
- URMAX = RMAX;
-
- UIMIN = IMIN;
-
- UIMAX = IMAX;
- }
-
- VOID RestoreCoords (VOID)
- {
- RMIN = URMIN;
-
- RMAX = URMAX;
-
- IMIN = UIMIN;
-
- IMAX = UIMAX;
- }
-
- BOOL NewCoords (struct Window *Win,const LONG a1,const LONG b1,const LONG a2,const LONG b2)
- {
- long double KReal,KImag;
-
- if (((a2 - a1) < 2L) || ((b2 - b1) < 2L)) return FALSE;
-
- KReal = fabs (RMAX-RMIN) / ((long double) Win->Width);
-
- KImag = fabs (IMAX-IMIN) / ((long double) Win->Height);
-
- SaveCoords ();
-
- RMAX = RMIN + ((long double) a2 * KReal);
-
- IMIN = IMAX - ((long double) b2 * KImag);
-
- RMIN += ((long double) a1 * KReal);
-
- IMAX -= ((long double) b1 * KImag);
-
- return TRUE;
- }
-
- VOID AdjustRatio (long double *RMin,long double *IMax,long double *RMax,long double *IMin,WORD ScrWidth,WORD ScrHeight,BOOL KeepReal)
- {
- long double RWidth,IHeight,RCenter,ICenter;
-
- IHeight = *IMax - *IMin;
-
- RWidth = *RMax - *RMin;
-
- if (KeepReal)
- {
- ICenter = *IMin + (IHeight / 2.0);
-
- IHeight = (RWidth * ScrHeight) / ScrWidth;
-
- *IMax = ICenter + (IHeight / 2.0);
-
- *IMin = ICenter - (IHeight / 2.0);
- }
-
- else
- {
- RCenter = *RMin + (RWidth / 2.0);
-
- RWidth = (IHeight * ScrWidth) / ScrHeight;
-
- *RMax = RCenter + (RWidth / 2.0);
-
- *RMin = RCenter - (RWidth / 2.0);
- }
- }
-
- LONG About (struct Window *Win)
- {
- struct EasyStruct MyReq_1 = { sizeof (struct EasyStruct),0,"Informations requester"," " VERSION COPYRIGHT "\n\n " AUTHOR "\n\n" ADDRESS EMAIL "\n\n\n This program is GiftWare ! \n\n","Ok|More..." };
-
- struct EasyStruct MyReq_2 = { sizeof (struct EasyStruct),0,"Workgroup"," Greetings & thanks to\n\n Sergio Tassi: Palettes,GUILook\n\n Giuseppe Staffelli: RTG Debug\n\n\n Crime do not pay !\n\n\n Call Double Impact BBS\n\n +39-81-5881319/5889963 24/24h\n\nMultiline ISDN by Paolo Carotenuto\n\n","Ok" };
-
- LONG More;
-
- More = EasyRequest (Win,&MyReq_1,0);
-
- if (! More) EasyRequest (Win,&MyReq_2,0);
-
- return More;
- }
-
- LONG Choice (struct Window *Win,TEXT *Title,TEXT *String)
- {
- struct EasyStruct MyReq = { sizeof (struct EasyStruct),NULL,0,0,"Yes|No" };
-
- MyReq.es_Title = Title;
-
- MyReq.es_TextFormat = String;
-
- return EasyRequest (Win,&MyReq,0);
- }
-
- BOOL ShowCoords (struct Window *Win)
- {
- struct Gadget *GadList = NULL,*StringGad_1,*StringGad_2,*StringGad_3,*StringGad_4;
-
- struct Gadget *MyButtonGad,*MyCheckBoxGad,*MyGad = NULL;
-
- struct Window *GadWin;
-
- struct IntuiMessage *Message;
-
- BOOL NewLimits = FALSE,Exit = FALSE,Accept = FALSE,Reset = FALSE,Ratio = FALSE,KeepReal = TRUE;
-
- TEXT String [MAXCHARS];
-
- UWORD MyCode = 0;
-
- ULONG MyClass = NULL;
-
- long double Tmp_RMIN = RMIN,Tmp_IMAX = IMAX,Tmp_RMAX = RMAX,Tmp_IMIN = IMIN;
-
- TEXTGAD.ng_VisualInfo = BUTTONGAD.ng_VisualInfo = CHECKBOXGAD.ng_VisualInfo = VINFO;
-
- MyCheckBoxGad = CreateContext (&GadList);
-
- CHECKBOXGAD.ng_LeftEdge = 14;
-
- CHECKBOXGAD.ng_TopEdge = 120;
-
- CHECKBOXGAD.ng_Width = 20;
-
- CHECKBOXGAD.ng_Height = 20;
-
- CHECKBOXGAD.ng_GadgetText = "_Keep real limits";
-
- CHECKBOXGAD.ng_Flags = PLACETEXT_RIGHT;
-
- CHECKBOXGAD.ng_GadgetID = KEEP;
-
- MyCheckBoxGad = CreateGadget (CHECKBOX_KIND,MyCheckBoxGad,&CHECKBOXGAD,GTCB_Checked,TRUE,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge = 14;
-
- BUTTONGAD.ng_TopEdge = 140;
-
- BUTTONGAD.ng_Width = 80;
-
- BUTTONGAD.ng_Height = 20;
-
- BUTTONGAD.ng_GadgetText = "_Accept";
-
- BUTTONGAD.ng_GadgetID = ACCEPT;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyCheckBoxGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (14 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = "Rat_io";
-
- BUTTONGAD.ng_GadgetID = RATIO;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (14 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = "Re_set";
-
- BUTTONGAD.ng_GadgetID = RESET;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (14 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = "_Cancel";
-
- BUTTONGAD.ng_GadgetID = CANCEL;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (14 + BUTTONGAD.ng_Width);
-
- TEXTGAD.ng_LeftEdge = 54;
-
- TEXTGAD.ng_TopEdge = 14;
-
- TEXTGAD.ng_Width = 268;
-
- TEXTGAD.ng_Height = 14;
-
- TEXTGAD.ng_GadgetText = "_Left";
-
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- sprintf (String,"%+2.80lf",RMIN);
-
- StringGad_1 = CreateGadget (STRING_KIND,MyButtonGad,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (14 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = "_Top ";
-
- sprintf (String,"%+2.80lf",IMAX);
-
- StringGad_2 = CreateGadget (STRING_KIND,StringGad_1,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (14 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = "_Right";
-
- TEXTGAD.ng_Flags = PLACETEXT_RIGHT;
-
- sprintf (String,"%+2.80lf",RMAX);
-
- StringGad_3 = CreateGadget (STRING_KIND,StringGad_2,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_TopEdge += (14 + TEXTGAD.ng_Height);
-
- TEXTGAD.ng_GadgetText = "_Bottom";
-
- sprintf (String,"%+2.80lf",IMIN);
-
- StringGad_4 = CreateGadget (STRING_KIND,StringGad_3,&TEXTGAD,GTST_String,String,STRINGA_ReplaceMode,TRUE,GTST_MaxChars,MAXCHARS,GT_Underscore,'_',TAG_END);
-
- if (StringGad_4)
- {
- GadWin = OpenWindowTags (NULL,WA_Left,Win->LeftEdge + 10,
- WA_Top,Win->TopEdge + 15,
- WA_Width,BUTTONGAD.ng_LeftEdge + 10,
- WA_Height,BUTTONGAD.ng_TopEdge + BUTTONGAD.ng_Height + 14 + 15,
- WA_Title,"Coordinates requester",
- WA_ScreenTitle,"Insert new range...",
- WA_CustomScreen,Win->WScreen,
- WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY|STRINGIDCMP|BUTTONIDCMP,
- WA_Flags,WFLG_ACTIVATE|WFLG_DRAGBAR|WFLG_SIMPLE_REFRESH|WFLG_GIMMEZEROZERO|WFLG_RMBTRAP,
- WA_Gadgets,GadList,
- TAG_END);
- if (GadWin)
- {
- GT_RefreshWindow (GadWin,NULL);
-
- do { WaitPort (GadWin->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (GadWin->UserPort))
- {
- MyGad = (struct Gadget *) Message->IAddress;
-
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
- }
-
- switch (MyClass)
- {
- case IDCMP_REFRESHWINDOW : GT_BeginRefresh (GadWin);
-
- GT_EndRefresh (GadWin,TRUE);
-
- break;
-
- case IDCMP_VANILLAKEY : switch (ToUpper (MyCode))
- {
- case 'L' : ActivateGadget (StringGad_1,GadWin,0);
-
- break;
-
- case 'T' : ActivateGadget (StringGad_2,GadWin,0);
-
- break;
-
- case 'R' : ActivateGadget (StringGad_3,GadWin,0);
-
- break;
-
- case 'B' : ActivateGadget (StringGad_4,GadWin,0);
-
- break;
-
- case 'A' : Accept = TRUE;
-
- break;
-
- case 'I' : Ratio = TRUE;
-
- break;
-
- case 'S' : Reset = TRUE;
-
- break;
-
- case 'C' : Exit = TRUE;
-
- break;
-
- case 'K' : KeepReal = ! KeepReal;
-
- GT_SetGadgetAttrs (MyCheckBoxGad,GadWin,NULL,GTCB_Checked,KeepReal,TAG_END);
-
- break;
-
- case VAN_ESC: Exit = TRUE;
- }
-
- break;
-
- case IDCMP_GADGETUP : switch (MyGad->GadgetID)
- {
- case ACCEPT: Accept = TRUE;
-
- break;
-
- case RATIO: Ratio = TRUE;
-
- break;
-
- case RESET: Reset = TRUE;
-
- break;
-
- case KEEP: KeepReal = ! KeepReal;
-
- break;
-
- case CANCEL: Exit = TRUE;
- }
-
- break;
-
- case IDCMP_CLOSEWINDOW : Exit = TRUE;
- }
-
- if (Accept)
- {
- sscanf (((struct StringInfo *) StringGad_1->SpecialInfo)->Buffer,"%lf",&Tmp_RMIN);
-
- sscanf (((struct StringInfo *) StringGad_2->SpecialInfo)->Buffer,"%lf",&Tmp_IMAX);
-
- sscanf (((struct StringInfo *) StringGad_3->SpecialInfo)->Buffer,"%lf",&Tmp_RMAX);
-
- sscanf (((struct StringInfo *) StringGad_4->SpecialInfo)->Buffer,"%lf",&Tmp_IMIN);
-
- if ((Tmp_RMIN >= Tmp_RMAX) || (Tmp_IMIN >= Tmp_IMAX)) DisplayBeep (Win->WScreen);
-
- else
- {
- NewLimits = Exit = TRUE;
-
- SaveCoords ();
-
- RMIN = Tmp_RMIN;
-
- IMAX = Tmp_IMAX;
-
- RMAX = Tmp_RMAX;
-
- IMIN = Tmp_IMIN;
- }
-
- Accept = FALSE;
- }
-
- if (Ratio)
- {
- AdjustRatio (&Tmp_RMIN,&Tmp_IMAX,&Tmp_RMAX,&Tmp_IMIN,Win->Width,Win->Height,KeepReal);
-
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- sprintf (String,"%+2.80lf",Tmp_RMIN);
-
- GT_SetGadgetAttrs (StringGad_1,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.80lf",Tmp_IMAX);
-
- GT_SetGadgetAttrs (StringGad_2,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.80lf",Tmp_RMAX);
-
- TEXTGAD.ng_Flags = PLACETEXT_RIGHT;
-
- GT_SetGadgetAttrs (StringGad_3,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.80lf",Tmp_IMIN);
-
- GT_SetGadgetAttrs (StringGad_4,GadWin,NULL,GTST_String,String,TAG_END);
-
- Ratio = FALSE;
- }
-
- if (Reset)
- {
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- sprintf (String,"%+2.80lf",DEF_RMIN);
-
- GT_SetGadgetAttrs (StringGad_1,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.80lf",DEF_IMAX);
-
- GT_SetGadgetAttrs (StringGad_2,GadWin,NULL,GTST_String,String,TAG_END);
-
- TEXTGAD.ng_Flags = PLACETEXT_RIGHT;
-
- sprintf (String,"%+2.80lf",DEF_RMAX);
-
- GT_SetGadgetAttrs (StringGad_3,GadWin,NULL,GTST_String,String,TAG_END);
-
- sprintf (String,"%+2.80lf",DEF_IMIN);
-
- GT_SetGadgetAttrs (StringGad_4,GadWin,NULL,GTST_String,String,TAG_END);
-
- Reset = FALSE;
- }
-
- } while (Exit == FALSE);
-
- CloseWindow (GadWin);
- }
-
- else Fail (WindowGadgetError,15L);
- }
-
- else Fail (GadgetError,15L);
-
- FreeGadgets (GadList);
-
- return NewLimits;
- }
-
- ULONG IntegerGad (struct Window *Win,TEXT *TitleWin,TEXT *TitleScr,TEXT *TxtString,ULONG Var)
- {
- struct IntuiMessage *Message;
-
- struct Gadget *GadList = NULL , *MyIntGad , *MyButtonGad , *MyGad = NULL;
-
- struct Window *GadWin;
-
- BOOL Exit = FALSE;
-
- UWORD MyCode = 0;
-
- ULONG MyClass = NULL;
-
- TEXTGAD.ng_VisualInfo = BUTTONGAD.ng_VisualInfo = VINFO;
-
- MyButtonGad = CreateContext (&GadList);
-
- BUTTONGAD.ng_LeftEdge = 20;
-
- BUTTONGAD.ng_TopEdge = 40;
-
- BUTTONGAD.ng_Width = 80;
-
- BUTTONGAD.ng_Height = 20;
-
- BUTTONGAD.ng_GadgetText = "_Accept";
-
- BUTTONGAD.ng_GadgetID = ACCEPT;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- BUTTONGAD.ng_LeftEdge += (20 + BUTTONGAD.ng_Width);
-
- BUTTONGAD.ng_GadgetText = "_Cancel";
-
- BUTTONGAD.ng_GadgetID = CANCEL;
-
- MyButtonGad = CreateGadget (BUTTON_KIND,MyButtonGad,&BUTTONGAD,GT_Underscore,'_',TAG_END);
-
- TEXTGAD.ng_LeftEdge = 120;
-
- TEXTGAD.ng_TopEdge = 10;
-
- TEXTGAD.ng_Width = 60;
-
- TEXTGAD.ng_Height = 14;
-
- TEXTGAD.ng_GadgetText = TxtString;
-
- TEXTGAD.ng_Flags = PLACETEXT_LEFT;
-
- MyIntGad = CreateGadget (INTEGER_KIND,MyButtonGad,&TEXTGAD,GTIN_Number,Var,GTIN_MaxChars,6,STRINGA_ReplaceMode,TRUE,GT_Underscore,'_',TAG_END);
-
- if (MyIntGad)
- {
- GadWin = OpenWindowTags (NULL,WA_Left,Win->LeftEdge + 10,
- WA_Top,Win->TopEdge + 15,
- WA_Width,220,
- WA_Height,80,
- WA_Title,TitleWin,
- WA_ScreenTitle,TitleScr,
- WA_CustomScreen,Win->WScreen,
- WA_IDCMP,IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_VANILLAKEY|INTEGERIDCMP|BUTTONIDCMP,
- WA_Flags,WFLG_ACTIVATE|WFLG_DRAGBAR|WFLG_SIMPLE_REFRESH|WFLG_GIMMEZEROZERO|WFLG_RMBTRAP,
- WA_Gadgets,GadList,
- TAG_END);
-
- if (GadWin)
- {
- GT_RefreshWindow (GadWin,NULL);
-
- do { WaitPort (GadWin->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (GadWin->UserPort))
- {
- MyGad = (struct Gadget *) Message->IAddress;
-
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
- }
-
- switch (MyClass)
- {
- case IDCMP_REFRESHWINDOW : GT_BeginRefresh (GadWin);
-
- GT_EndRefresh (GadWin,TRUE);
-
- break;
-
- case IDCMP_VANILLAKEY : switch (ToUpper (MyCode))
- {
- case 'D' :
-
- case 'I' : ActivateGadget (MyIntGad,GadWin,0);
-
- break;
-
- case 'A' : Var = ((struct StringInfo *) MyIntGad->SpecialInfo)->LongInt;
-
- Exit = TRUE;
-
- break;
-
- case 'C' : Exit = TRUE;
-
- break;
-
- case VAN_ESC: Exit = TRUE;
- }
-
- break;
-
- case IDCMP_GADGETUP : switch (MyGad->GadgetID)
- {
- case ACCEPT : Var = ((struct StringInfo *) MyIntGad->SpecialInfo)->LongInt;
-
- Exit = TRUE;
-
- break;
-
- case CANCEL : Exit = TRUE;
- }
-
- break;
-
- case IDCMP_CLOSEWINDOW : Exit = TRUE;
- }
-
- } while (Exit == FALSE);
-
- CloseWindow (GadWin);
- }
-
- else Fail (WindowError,15L);
- }
-
- else Fail (GadgetError,15L);
-
- FreeGadgets (GadList);
-
- return Var;
- }
-
- #ifdef __USE_FPU
-
- WORD Real (WORD Iterazioni,long double Cre,long double Cim)
- {
- return MandFPU (Iterazioni,Cre,Cim);
- }
-
- #else
-
- WORD Real (WORD Iterazioni,long double Cre,long double Cim)
- {
- register long double zr,zi,zr2,zi2;
-
- zr = Cre;
-
- zi = Cim;
-
- zr2 = Cre * Cre;
-
- zi2 = Cim * Cim;
-
- while ((zr2 + zi2 <= 4.0))
- {
- if (--Iterazioni == 0) break;
-
- zi *= zr;
-
- zr = zr2 - zi2 + Cre;
-
- zi += zi + Cim;
-
- zr2 = zr * zr;
-
- zi2 = zi * zi;
- }
-
- return Iterazioni;
- }
-
- #endif
-
- WORD Integer (WORD Iterazioni,long double Cre,long double Cim)
- {
- return MandINT (Iterazioni,(LONG) (Cre * MAX_POT),(LONG) (Cim * MAX_POT));
- }
-
- VOID VLine_R_EHB (struct RastPort *Rp,const LONG b1,const LONG b2,const LONG x)
- {
- REGISTER LONG y;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) x) * INCREMREAL);
-
- CIM = IMAX - (((long double) b2) * INCREMIMAG);
-
- for (y = b2; y >= b1; y--)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color %= 56L;
-
- Color += 4L;
-
- if (Color > 31L) Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CIM += INCREMIMAG;
- }
- }
-
- VOID HLine_R_EHB (struct RastPort *Rp,const LONG a1,const LONG a2,const LONG y)
- {
- REGISTER LONG x;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) a1) * INCREMREAL);
-
- CIM = IMAX - (((long double) y) * INCREMIMAG);
-
- for (x = a1; x <= a2; x++)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color %= 56L;
-
- Color += 4L;
-
- if (Color > 31L) Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CRE += INCREMREAL;
- }
- }
-
- VOID VLine_R (struct RastPort *Rp,const LONG b1,const LONG b2,const LONG x)
- {
- REGISTER LONG y;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) x) * INCREMREAL);
-
- CIM = IMAX - (((long double) b2) * INCREMIMAG);
-
- for (y = b2; y >= b1; y--)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color %= COLOR_PENS;
-
- Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CIM += INCREMIMAG;
- }
- }
-
- VOID HLine_R (struct RastPort *Rp,const LONG a1,const LONG a2,const LONG y)
- {
- REGISTER LONG x;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) a1) * INCREMREAL);
-
- CIM = IMAX - (((long double) y) * INCREMIMAG);
-
- for (x = a1; x <= a2; x++)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color %= COLOR_PENS;
-
- Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CRE += INCREMREAL;
- }
- }
-
- VOID VLine_S_EHB (struct RastPort *Rp,const LONG b1,const LONG b2,const LONG x)
- {
- REGISTER LONG y;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) x) * INCREMREAL);
-
- CIM = IMAX - (((long double) b2) * INCREMIMAG);
-
- for (y = b2; y >= b1; y--)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color *= 56L;
-
- Color /= MAX_ITERATIONS_PLUS_ONE;
-
- Color += 4L;
-
- if (Color > 31L) Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CIM += INCREMIMAG;
- }
- }
-
- VOID HLine_S_EHB (struct RastPort *Rp,const LONG a1,const LONG a2,const LONG y)
- {
- REGISTER LONG x;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) a1) * INCREMREAL);
-
- CIM = IMAX - (((long double) y) * INCREMIMAG);
-
- for (x = a1; x <= a2; x++)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color *= 56L;
-
- Color /= MAX_ITERATIONS_PLUS_ONE;
-
- Color += 4L;
-
- if (Color > 31L) Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CRE += INCREMREAL;
- }
- }
-
- VOID VLine_S (struct RastPort *Rp,const LONG b1,const LONG b2,const LONG x)
- {
- REGISTER LONG y;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) x) * INCREMREAL);
-
- CIM = IMAX - (((long double) b2) * INCREMIMAG);
-
- for (y = b2; y >= b1; y--)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color *= COLOR_PENS;
-
- Color /= MAX_ITERATIONS_PLUS_ONE;
-
- Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CIM += INCREMIMAG;
- }
- }
-
- VOID HLine_S (struct RastPort *Rp,const LONG a1,const LONG a2,const LONG y)
- {
- REGISTER LONG x;
-
- ULONG Color;
-
- CRE = RMIN + (((long double) a1) * INCREMREAL);
-
- CIM = IMAX - (((long double) y) * INCREMIMAG);
-
- for (x = a1; x <= a2; x++)
- {
- Color = FUNCTION (MAX_ITERATIONS,CRE,CIM);
-
- if (Color)
- {
- Color *= COLOR_PENS;
-
- Color /= MAX_ITERATIONS_PLUS_ONE;
-
- Color += 4L;
- }
-
- SetAPen (Rp,Color);
-
- WritePixel (Rp,x,y);
-
- CRE += INCREMREAL;
- }
- }
-
- BOOL CheckBox (struct RastPort *Rp,const LONG a1,const LONG b1,const LONG a2,const LONG b2)
- {
- const LONG Color = ReadPixel (Rp,a1,b1);
-
- REGISTER LONG Var;
-
- if (Color != ReadPixel (Rp,a2,b2)) return FALSE;
-
- if (Color != ReadPixel (Rp,a2,b1)) return FALSE;
-
- if (Color != ReadPixel (Rp,a1,b2)) return FALSE;
-
- for (Var = (a1 + 1L); Var <= (a2 - 1L); Var++)
- {
- if (Color != ReadPixel (Rp,Var,b1)) return FALSE;
-
- if (Color != ReadPixel (Rp,Var,b2)) return FALSE;
- }
-
- for (Var = (b1 + 1L); Var <= (b2 - 1L); Var++)
- {
- if (Color != ReadPixel (Rp,a1,Var)) return FALSE;
-
- if (Color != ReadPixel (Rp,a2,Var)) return FALSE;
- }
-
- return TRUE;
- }
-
- BOOL Rectangle (struct Window *Win,const LONG a1,const LONG b1,const LONG a2,const LONG b2)
- {
- struct IntuiMessage *Message;
-
- UWORD MyCode;
-
- LONG helpx,helpy;
-
- ULONG MyClass;
-
- if (Win->UserPort->mp_SigBit)
- {
- if (Message = (struct IntuiMessage *) GT_GetIMsg (Win->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
-
- switch (MyClass)
- {
- case IDCMP_MENUPICK : if (MyCode != MENUNULL)
- {
- if (ProcessMenu (Win,MyCode) & STOP_MSG) return TRUE;
- }
-
- break;
-
- case IDCMP_RAWKEY : if (MyCode == TAB) return FALSE;
-
- if (MyCode == RAW_ESC) return TRUE;
-
- break;
-
- case IDCMP_CLOSEWINDOW : return TRUE;
- }
- }
- }
-
- helpx = a2 - a1;
-
- helpy = b2 - b1;
-
- if ((helpx < MINLIMIT) || (helpy < MINLIMIT)) return FALSE;
-
- if (CheckBox (Win->RPort,a1,b1,a2,b2))
- {
- SetAPen (Win->RPort,ReadPixel (Win->RPort,a1,b1));
-
- RectFill (Win->RPort,a1,b1,a2,b2);
-
- return FALSE;
- }
-
- if ((helpx < (MINLIMIT << 1L)) || (helpy < (MINLIMIT << 1L)))
- {
- for (helpy = (b1 + 1L); helpy <= (b2 - 1L); helpy++)
- {
- H_LINE (Win->RPort,a1+1L,a2-1L,helpy);
- }
-
- return FALSE;
- }
-
- if (helpx >= helpy)
- {
- helpx = (a1 + a2) >> 1L;
-
- V_LINE (Win->RPort,b1+1L,b2-1L,helpx);
-
- if (Rectangle (Win,a1,b1,helpx,b2)) return TRUE;
-
- if (Rectangle (Win,helpx,b1,a2,b2)) return TRUE;
- }
-
- else
- {
- helpy = (b1 + b2) >> 1L;
-
- H_LINE (Win->RPort,a1+1L,a2-1L,helpy);
-
- if (Rectangle (Win,a1,b1,a2,helpy)) return TRUE;
-
- if (Rectangle (Win,a1,helpy,a2,b2)) return TRUE;
- }
-
- return FALSE;
- }
-
- ULONG DrawFractal (struct Window *Win,const LONG a1,const LONG b1,const LONG a2,const LONG b2)
- {
- ULONG StartSec = NULL , EndSec = NULL , Dummy = NULL;
-
- CurrentTime (&StartSec,&Dummy);
-
- INCREMREAL = (fabs (RMAX-RMIN)) / ((long double) (a2 - a1 + 1L));
-
- INCREMIMAG = (fabs (IMAX-IMIN)) / ((long double) (b2 - b1 + 1L));
-
- MAX_ITERATIONS_PLUS_ONE = MAX_ITERATIONS + 1;
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,FALSE);
-
- H_LINE (Win->RPort,a1,a2,b1);
-
- V_LINE (Win->RPort,b1+1L,b2-1L,a2);
-
- H_LINE (Win->RPort,a1,a2,b2);
-
- V_LINE (Win->RPort,b1+1L,b2-1L,a1);
-
- Rectangle (Win,a1,b1,a2,b2);
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,TRUE);
-
- CurrentTime (&EndSec,&Dummy);
-
- return (EndSec-StartSec);
- }
-
- BOOL Preview (struct Window *Win,const LONG Width,const LONG Height)
- {
- struct Window *PreviewWin;
-
- struct IntuiMessage *Message;
-
- BOOL Error = FALSE;
-
- UWORD MyCode = 0;
-
- ULONG MyClass = NULL;
-
- MYBITMAP = CopyBitMap (Win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- PreviewWin = OpenWindowTags (0,WA_Left,Win->LeftEdge + 10,
- WA_Top,Win->TopEdge + 15,
- WA_Width,(WORD) (Width >> 1L),
- WA_Height,(WORD) (Height >> 1L),
- WA_Title,"Preview window",
- WA_ScreenTitle,"¼ Window preview...",
- WA_CustomScreen,Win->WScreen,
- WA_IDCMP,IDCMP_RAWKEY|IDCMP_CLOSEWINDOW,
- WA_Flags,WFLG_ACTIVATE|WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_NOCAREREFRESH|WFLG_SMART_REFRESH|WFLG_RMBTRAP|WFLG_GIMMEZEROZERO,
- TAG_END);
- if (PreviewWin)
- {
- PasteWin (MYBITMAP,PreviewWin,ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- PutPointer (PreviewWin,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- ELAPSEDTIME = DrawFractal (PreviewWin,0L,0L,(LONG) (PreviewWin->GZZWidth) - 1L,(LONG) (PreviewWin->GZZHeight) - 1L);
-
- PutPointer (PreviewWin,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- ShowTime (Win,"Preview elapsed time:",ELAPSEDTIME);
-
- while (1L)
- {
- WaitPort (PreviewWin->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (PreviewWin->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
- }
-
- if (MyClass == IDCMP_CLOSEWINDOW) break;
-
- if ((MyClass == IDCMP_RAWKEY) && (MyCode == RAW_ESC)) break;
- }
-
- PutPointer (PreviewWin,0,0,0,0,0,0);
-
- CloseWindow (PreviewWin);
- }
-
- else
- {
- if (BMASK & MASK)
- {
- FreeBitMap (MYBITMAP);
-
- MASK ^= BMASK;
- }
-
- Fail (PreviewWindowError,15L);
-
- Error = TRUE;
- }
-
- return Error;
- }
-
- BOOL DrawFrame (struct Window *Win,WORD Zx,WORD Zy,WORD Zw,WORD Zh)
- {
- WORD LeftEdge,TopEdge,RightEdge,BottomEdge;
-
- if ((Zx > 2) && (Zy > 2) && (Zx < Win->Width - 2) && (Zy < Win->Height - 2) && ((Zw >= INITIALZOOM) || (Zh >= INITIALZOOM)))
- {
- LeftEdge = Zx - Zw;
-
- TopEdge = Zy - Zh;
-
- RightEdge = Zx + Zw;
-
- BottomEdge = Zy + Zh;
-
- if ((LeftEdge >= 0) && (TopEdge >= 0) && (RightEdge <= Win->Width) && (BottomEdge <= Win->Height))
- {
- ZOOMLINE [8] = ZOOMLINE [0] = ZOOMLINE [6] = LeftEdge;
-
- ZOOMLINE [1] = ZOOMLINE [3] = TopEdge;
-
- ZOOMLINE [2] = ZOOMLINE [4] = RightEdge;
-
- ZOOMLINE [5] = ZOOMLINE [7] = BottomEdge;
-
- ZOOMLINE [9] = ZOOMLINE [1] + 1;
- }
-
- DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- MASK |= ZMASK;
- }
-
- else MASK ^= ZMASK;
-
- return (BOOL) (ZMASK & MASK);
- }
-
- BOOL FileRequest (struct Window *Win,TEXT *String,TEXT *DrawerTxt,BOOL DrawerType,BOOL Save)
- {
- struct FileRequester *MyFileReq;
-
- BOOL Success = FALSE;
-
- if (MyFileReq = AllocAslRequest (ASL_FileRequest,0))
- {
- MYDIR = (DrawerType ? PALETTESDIR : PICTURESDIR);
-
- if (! strlen (MYDIR)) strcpy (MYDIR,DrawerTxt);
-
- if (AslRequestTags (MyFileReq,ASLFR_Window,Win,
- ASLFR_InitialLeftEdge,Win->LeftEdge + 15,
- ASLFR_InitialTopEdge,Win->TopEdge + 25,
- ASLFR_InitialWidth,300,
- ASLFR_InitialHeight,((Win->Height) * 7) >> 3,
- ASLFR_SleepWindow,TRUE,
- ASLFR_TextAttr,&MYFONTSTRUCT,
- ASLFR_TitleText,String,
- ASLFR_InitialDrawer,MYDIR,
- ASLFR_InitialFile,MYFILE,
- ASLFR_DoSaveMode,Save,
- ASLFR_RejectIcons,TRUE,
- TAG_END))
- {
- strcpy (MYFILE,MyFileReq->rf_File);
-
- strcpy (MYDIR,MyFileReq->rf_Dir);
-
- strcpy (MYPATH,MYDIR);
-
- Success = AddPart (MYPATH,MYFILE,sizeof (MYPATH));
- }
-
- FreeAslRequest (MyFileReq);
- }
-
- return Success;
- }
-
- BOOL FontRequest (struct Window *Win)
- {
- struct FontRequester *MyFontReq;
-
- BOOL Success = FALSE;
-
- if (MyFontReq = AllocAslRequest (ASL_FontRequest,0))
- {
- if (AslRequestTags (MyFontReq,ASLFO_Window,Win,
- ASLFO_InitialLeftEdge,Win->LeftEdge + 15,
- ASLFO_InitialTopEdge,Win->TopEdge + 25,
- ASLFO_InitialWidth,300,
- ASLFO_InitialHeight,((Win->Height) * 7) >> 3,
- ASLFO_SleepWindow,TRUE,
- ASLFO_TextAttr,&MYFONTSTRUCT,
- ASLFO_TitleText,"Font requester",
- ASLFO_InitialName,MYFONTSTRUCT.ta_Name,
- ASLFO_InitialSize,MYFONTSTRUCT.ta_YSize,
- ASLFO_InitialStyle,MYFONTSTRUCT.ta_Style,
- ASLFO_InitialFlags,MYFONTSTRUCT.ta_Flags,
- ASLFO_DoFrontPen,TRUE,
- ASLFO_DoBackPen,TRUE,
- ASLFO_DoStyle,TRUE,
- ASLFO_DoDrawMode,TRUE,
- ASLFO_MinHeight,8,
- TAG_END))
- {
- strcpy (MYFONTSTRUCT.ta_Name,MyFontReq->fo_Attr.ta_Name);
-
- MYFONTSTRUCT.ta_YSize = MyFontReq->fo_Attr.ta_YSize;
-
- MYFONTSTRUCT.ta_Style = MyFontReq->fo_Attr.ta_Style;
-
- MYFONTSTRUCT.ta_Flags = MyFontReq->fo_Attr.ta_Flags;
-
- Success = TRUE;
- }
-
- FreeAslRequest (MyFontReq);
- }
-
- return Success;
- }
-
- LONG __asm __interrupt __saveds SMFilterFunc (register __a0 struct Hook *Hook,register __a1 ULONG DisplayID,register __a2 struct ScreenModeRequester *SMReq)
- {
- DisplayInfoHandle DisplayHandle;
-
- struct DisplayInfo DisplayInfo;
-
- struct DimensionInfo DimensionInfo;
-
- DisplayHandle = FindDisplayInfo (DisplayID);
-
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DisplayInfo,sizeof (struct DisplayInfo),DTAG_DISP,DisplayID))
- {
- if (GetDisplayInfoData (DisplayHandle,(UBYTE *) &DimensionInfo,sizeof (struct DimensionInfo),DTAG_DIMS,DisplayID))
- {
- return ((DimensionInfo.MaxDepth <= MAX_DEPTH) && ((DisplayInfo.PropertyFlags & DIPF_IS_WB) || (DisplayInfo.PropertyFlags & DIPF_IS_EXTRAHALFBRITE)));
- }
- }
-
- return FALSE;
- }
-
- BOOL SMRequest (struct ILBMInfo *Ilbm)
- {
- struct ScreenModeRequester *SMReq;
-
- struct Window *Win = Ilbm->win;
-
- BOOL NewScreen = FALSE;
-
- if (SMReq = AllocAslRequest (ASL_ScreenModeRequest,NULL))
- {
- if (AslRequestTags (SMReq,ASLSM_Window,Win,
- ASLSM_SleepWindow,TRUE,
- ASLSM_TitleText,"ScreenMode requester",
- ASLSM_InitialLeftEdge,Win->LeftEdge + 15,
- ASLSM_InitialTopEdge,Win->TopEdge + 25,
- ASLSM_InitialWidth,310,
- ASLSM_InitialHeight,((Win->Height) * 7) >> 3,
- ASLSM_InitialDisplayID,GetVPModeID (ViewPortAddress (Win)),
- ASLSM_InitialDisplayWidth,Win->Width,
- ASLSM_InitialDisplayHeight,Win->Height,
- ASLSM_InitialDisplayDepth,Win->RPort->BitMap->Depth,
- ASLSM_InitialOverscanType,Ilbm->ucliptype,
- ASLSM_InitialInfoOpened,TRUE,
- ASLSM_InitialInfoLeftEdge,Win->LeftEdge + 310 + 15,
- ASLSM_InitialInfoTopEdge,Win->TopEdge,
- ASLSM_DoWidth,TRUE,
- ASLSM_DoHeight,TRUE,
- ASLSM_DoDepth,TRUE,
- ASLSM_DoOverscanType,TRUE,
- ASLSM_MinDepth,MIN_DEPTH,
- ASLSM_MaxDepth,MAX_DEPTH,
- ASLSM_PropertyFlags,DIPF_IS_WB|DIPF_IS_EXTRAHALFBRITE,
- ASLSM_PropertyMask,DIPF_IS_DUALPF|DIPF_IS_PF2PRI|DIPF_IS_HAM,
- ASLSM_FilterFunc,&SMFILTERHOOK,
- ASLSM_MinWidth,MIN_WIDTH,
- ASLSM_MinHeight,MIN_HEIGHT,
- TAG_END))
- {
- Ilbm->camg = SMReq->sm_DisplayID;
-
- Ilbm->Bmhd.w = SMReq->sm_DisplayWidth;
-
- Ilbm->Bmhd.h = SMReq->sm_DisplayHeight;
-
- Ilbm->Bmhd.nPlanes = SMReq->sm_DisplayDepth;
-
- Ilbm->ucliptype = SMReq->sm_OverscanType;
-
- NewScreen = TRUE;
- }
-
- FreeAslRequest (SMReq);
- }
-
- return NewScreen;
- }
-
- VOID SetMenuStart (struct Window *Win)
- {
- OnMenu (Win,FULLMENUNUM (0,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,2,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,3,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,4,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,5,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,7,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (0,9,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,1,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,2,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (1,4,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (2,2,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (2,4,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,7,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,2,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,4,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (3,6,NOSUB));
- }
-
- VOID SetMenuStop (struct Window *Win)
- {
- OffMenu (Win,FULLMENUNUM (0,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,3,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,4,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,5,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,7,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (0,9,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,1,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (1,4,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,4,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,6,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (2,7,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,2,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,4,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (3,6,NOSUB));
- }
-
- ULONG ProcessMenu (struct Window *Win,UWORD Code)
- {
- struct MenuItem *Item;
-
- ULONG Choice = NULL;
-
- while (Code != MENUNULL)
- {
- Item = ItemAddress (MAINMENU,Code);
-
- switch (MENUNUM (Code))
- {
- case 0: switch (ITEMNUM (Code))
- {
- case 0: Choice |= ABOUT_MSG;
-
- break;
-
- case 2: Choice |= LOADPICTURE_MSG;
-
- break;
-
- case 3: Choice |= SAVEPICTURE_MSG;
-
- break;
-
- case 4: Choice |= LOADPALETTE_MSG;
-
- break;
-
- case 5: Choice |= SAVEPALETTE_MSG;
-
- break;
-
- case 7: Choice |= DUMP_MSG;
-
- break;
-
- case 9: Choice |= EXIT_MSG;
-
- break;
- }
-
- break;
-
- case 1: switch (ITEMNUM (Code))
- {
- case 0: switch (SUBNUM (Code))
- {
- case 0: Choice |= TITLE_MSG;
-
- break;
-
- case 2: Choice |= TIME_MSG;
-
- break;
- }
-
- break;
-
- case 1: Choice |= COORDS_MSG;
-
- break;
-
- case 2: switch (SUBNUM (Code))
- {
- case 0: MAX_ITERATIONS = 63;
-
- break;
-
- case 1: MAX_ITERATIONS = 127;
-
- break;
-
- case 2: MAX_ITERATIONS = 191;
-
- break;
-
- case 3: MAX_ITERATIONS = 255;
-
- break;
-
- case 4: MAX_ITERATIONS = 319;
-
- break;
-
- case 5: MAX_ITERATIONS = 383;
-
- break;
-
- case 6: MAX_ITERATIONS = 447;
-
- break;
-
- case 7: MAX_ITERATIONS = 511;
-
- break;
-
- case 8: MAX_ITERATIONS = 1023;
-
- break;
-
- case 10: Choice |= ITER_MSG;
-
- break;
- }
-
- break;
-
- case 3: switch (SUBNUM (Code))
- {
- case 0: PRIORITY = -5;
-
- break;
-
- case 1: PRIORITY = -4;
-
- break;
-
- case 2: PRIORITY = -3;
-
- break;
-
- case 3: PRIORITY = -2;
-
- break;
-
- case 4: PRIORITY = -1;
-
- break;
-
- case 6: PRIORITY = 0;
-
- break;
-
- case 8: PRIORITY = 1;
-
- break;
-
- case 9: PRIORITY = 2;
-
- break;
-
- case 10: PRIORITY = 3;
-
- break;
-
- case 11: PRIORITY = 4;
-
- break;
-
- case 12: PRIORITY = 5;
-
- break;
-
- }
-
- Forbid ();
-
- THISTASK = FindTask (NULL);
-
- Permit ();
-
- SetTaskPri (THISTASK,PRIORITY);
-
- break;
-
- case 4: switch (SUBNUM (Code))
- {
- case 0: if (CheckEHB (MYILBM.camg))
- {
- H_LINE = HLine_R_EHB;
-
- V_LINE = VLine_R_EHB;
- }
-
- else
- {
- H_LINE = HLine_R;
-
- V_LINE = VLine_R;
- }
-
- SPREAD = FALSE;
-
- break;
-
- case 1: if (CheckEHB (MYILBM.camg))
- {
- H_LINE = HLine_S_EHB;
-
- V_LINE = VLine_S_EHB;
- }
-
- else
- {
- H_LINE = HLine_S;
-
- V_LINE = VLine_S;
- }
-
- SPREAD = TRUE;
-
- break;
- }
-
- break;
-
- case 5: switch (SUBNUM (Code))
- {
- case 0: FUNCTION = Integer;
-
- break;
-
- case 1: FUNCTION = Real;
-
- break;
- }
-
- break;
- }
-
- break;
-
- case 2: switch (ITEMNUM (Code))
- {
- case 0: Choice |= PREVIEW_MSG;
-
- break;
-
- case 2: Choice |= REDRAW_MSG;
-
- break;
-
- case 4: Choice |= UNDO_MSG;
-
- break;
-
- case 6: Choice |= DRAW_MSG;
-
- break;
-
- case 7: Choice |= STOP_MSG;
-
- break;
- }
-
- break;
-
- case 3: switch (ITEMNUM (Code))
- {
- case 0: switch (SUBNUM (Code))
- {
- case 0: Choice |= CYCLERIGHT_MSG;
-
- break;
-
- case 1: Choice |= CYCLELEFT_MSG;
-
- break;
-
- case 3: Choice |= DELAY_MSG;
-
- break;
-
- }
-
- break;
-
- case 2: Choice |= PALETTE_MSG;
-
- break;
-
- case 4: Choice |= NEWDISPLAY_MSG;
-
- break;
-
- case 6: Choice |= FONTREQ_MSG;
-
- break;
- }
- }
-
- Code = Item->NextSelect;
- }
-
- return Choice;
- }
-
- VOID ProcessMouse (struct Window *Win,WORD CurMouseX,WORD CurMouseY)
- {
- static WORD MX1 = 0 , MY1 = 0 , MX2 = 0 , MY2 = 0 , W = 0 , H = 0;
-
- struct IntuiMessage *Message;
-
- UWORD MyCode = 0,DefaultQueue;
-
- ULONG MyClass = NULL;
-
- ModifyIDCMP (Win,IDCMP_MOUSEBUTTONS | IDCMP_MOUSEMOVE);
-
- DefaultQueue = SetMouseQueue (Win,10);
-
- if (ZMASK & MASK) DrawFrame (Win,MX1,MY1,W,H);
-
- MX1 = CurMouseX;
-
- MY1 = CurMouseY;
-
- W = INITIALZOOM;
-
- H = ScalerDiv (W,Win->Height,Win->Width);
-
- DrawFrame (Win,MX1,MY1,W,H);
-
- while (1L)
- {
- WaitPort (Win->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (Win->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- MX2 = Message->MouseX;
-
- MY2 = Message->MouseY;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
- }
-
- if (MyClass == IDCMP_MOUSEMOVE)
- {
- DrawFrame (Win,MX1,MY1,W,H);
-
- W = abs (MX1 - MX2);
-
- H = abs (MY1 - MY2);
-
- if (W > H) (W = ScalerDiv (H,Win->Width,Win->Height));
-
- else (H = ScalerDiv (W,Win->Height,Win->Width));
-
- DrawFrame (Win,MX1,MY1,W,H);
- }
-
- else if ((MyClass == IDCMP_MOUSEBUTTONS) && (MyCode != SELECTDOWN)) break;
- }
-
- SetMouseQueue (Win,DefaultQueue);
-
- ModifyIDCMP (Win,IDCMP_STANDARD);
-
- if (ZMASK & MASK)
- {
- OnMenu (Win,FULLMENUNUM (2,0,NOSUB));
-
- OnMenu (Win,FULLMENUNUM (2,6,NOSUB));
- }
-
- else
- {
- OffMenu (Win,FULLMENUNUM (2,0,NOSUB));
-
- OffMenu (Win,FULLMENUNUM (2,6,NOSUB));
- }
- }
-
- ULONG HandleEvents (struct ILBMInfo *Ilbm)
- {
- struct IntuiMessage *Message;
-
- WORD MouseX = 0,MouseY = 0;
-
- UWORD MyCode = 0,Index;
-
- LONG Error;
-
- ULONG MyClass = NULL,MyMenu = NULL;
-
- DOUBLE RealCoord,ImagCoord,ScrRatio,FracRatio;
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- do { WaitPort (Ilbm->win->UserPort);
-
- if (Message = (struct IntuiMessage *) GT_GetIMsg (Ilbm->win->UserPort))
- {
- MyClass = Message->Class;
-
- MyCode = Message->Code;
-
- MouseX = Message->MouseX;
-
- MouseY = Message->MouseY;
-
- GT_ReplyIMsg ((struct IntuiMessage *) Message);
- }
-
- switch (MyClass)
- {
- case IDCMP_MOUSEMOVE: if (TMASK & MASK)
- {
- RealCoord = RMIN + ((DOUBLE) MouseX * fabs (RMAX-RMIN) / (DOUBLE) (Ilbm->win->Width - 1));
-
- ImagCoord = IMAX - ((DOUBLE) MouseY * fabs (IMAX-IMIN) / (DOUBLE) (Ilbm->win->Height - 1));
-
- ScrRatio = (DOUBLE) Ilbm->win->Width / (DOUBLE) Ilbm->win->Height;
-
- FracRatio = fabs (RMAX-RMIN) / fabs (IMAX-IMIN);
-
- sprintf (BAR_STRING,"Real %+2.16lf Imag %+2.16lfi W:H %.5lf R:I %.5lf",RealCoord,ImagCoord,ScrRatio,FracRatio);
-
- WaitTOF ();
-
- SetWindowTitles (Ilbm->win,(TEXT *) ~0,BAR_STRING);
- }
-
- break;
-
- case IDCMP_MOUSEBUTTONS: if (MyCode == SELECTDOWN) ProcessMouse (Ilbm->win,MouseX,MouseY);
-
- break;
-
- case IDCMP_MENUPICK: MyMenu = ProcessMenu (Ilbm->win,MyCode);
-
- if (MyMenu & EXIT_MSG) break;
-
- if (MyMenu & TITLE_MSG)
- {
- if (TMASK & MASK) MASK ^= TMASK;
-
- else MASK |= TMASK;
-
- Ilbm->TBState = TMASK & MASK;
-
- ShowTitle (Ilbm->scr,Ilbm->TBState);
-
- break;
- }
-
- if (MyMenu & TIME_MSG)
- {
- if (! (TMASK & MASK)) ShowTitle (Ilbm->scr,TRUE);
-
- ShowTime (Ilbm->win,"Last calculating time:",ELAPSEDTIME);
-
- Delay (MYSECS);
-
- if (! (TMASK & MASK)) ShowTitle (Ilbm->scr,FALSE);
-
- break;
- }
-
- if (MyMenu & ITER_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- while (1L)
- {
- MAX_ITERATIONS = (WORD) IntegerGad (Ilbm->win,"Iterations requester","Insert new iterations...","_Iterations",MAX_ITERATIONS + 1L) - 1L;
-
- if (MAX_ITERATIONS >= 15L) break;
-
- DisplayBeep (Ilbm->scr);
- }
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & ABOUT_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- About (Ilbm->win);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & PALETTE_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- if (! ModifyPalette (Ilbm->win,Ilbm->win->LeftEdge + 10,Ilbm->win->TopEdge + 15,300,218,PALETTE)) Fail (PaletteRequesterError,15L);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & CYCLERIGHT_MSG)
- {
- ModifyIDCMP (Ilbm->win,IDCMP_MOUSEBUTTONS|IDCMP_RAWKEY|IDCMP_MENUPICK);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- Cycle (Ilbm->win,DELAY,SHIFTRIGHT);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- LoadRGB32 (ViewPortAddress (Ilbm->win),PALETTE);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & CYCLELEFT_MSG)
- {
- ModifyIDCMP (Ilbm->win,IDCMP_MOUSEBUTTONS|IDCMP_RAWKEY|IDCMP_MENUPICK);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- Cycle (Ilbm->win,DELAY,SHIFTLEFT);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- LoadRGB32 (ViewPortAddress (Ilbm->win),PALETTE);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & DELAY_MSG)
- {
- while (1L)
- {
- DELAY = IntegerGad (Ilbm->win,"Delay requester","Insert delay time...","_Delay time",DELAY);
-
- if (DELAY >= 0L) break;
-
- DisplayBeep (Ilbm->scr);
- }
-
- break;
- }
-
- if (MyMenu & STOP_MSG)
- {
- SetMenuStart (Ilbm->win);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- break;
- }
-
- if (MyMenu & LOADPICTURE_MSG)
- {
- if (FileRequest (Ilbm->win,"Load iff picture","PROGDIR:Pictures",PICTURES_DRAWER,FALSE))
- {
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- if (! (Error = QueryMandPic (Ilbm,&MANDChunkTmp,MYPATH)))
- {
- MANDChunk = *MANDChunkTmp;
-
- SaveCoords ();
-
- RMIN = MANDChunk.RMin;
-
- RMAX = MANDChunk.RMax;
-
- IMIN = MANDChunk.IMin;
-
- IMAX = MANDChunk.IMax;
-
- MAX_ITERATIONS = MANDChunk.Iterations - 1L;
-
- if (MANDChunk.Special & SPREAD_BIT) SPREAD = TRUE;
-
- else SPREAD = FALSE;
-
- if (MANDChunk.Special & INTEGER_BIT) FUNCTION = Integer;
-
- else FUNCTION = Real;
-
- CloseDisplay (Ilbm,VINFO);
-
- Ilbm->IFFPFlags = IFFPF_BESTFIT;
-
- COLOR_PENS = MakeDisplay (Ilbm);
-
- Ilbm->IFFPFlags = NULL;
-
- if (! COLOR_PENS)
- {
- Fail (MakeDisplayError,20L);
-
- MyMenu = EXIT_MSG;
-
- break;
- }
-
- if (ZMASK & MASK) MASK ^= ZMASK;
-
- COLOR_PENS -= 4L;
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- if (LoadMandPic (Ilbm,MYPATH)) Fail (LoadMandPicError,5L);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- if (CheckEHB (Ilbm->camg)) GetRGB32 (Ilbm->vp->ColorMap,0L,32L,&PALETTE [1L]);
-
- else GetRGB32 (Ilbm->vp->ColorMap,0L,Ilbm->vp->ColorMap->Count,&PALETTE [1L]);
-
- LoadRGB32 (Ilbm->vp,PALETTE);
-
- ClearMenuStrip (Ilbm->win);
-
- if (SPREAD)
- {
- if (ItemAddress (MAINMENU,FULLMENUNUM (1,4,0))->Flags & CHECKED) ItemAddress (MAINMENU,FULLMENUNUM (1,4,0))->Flags ^= CHECKED;
-
- if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,4,1))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,4,1))->Flags |= CHECKED;
-
- if (CheckEHB (MYILBM.camg))
- {
- H_LINE = HLine_S_EHB;
-
- V_LINE = VLine_S_EHB;
- }
-
- else
- {
- H_LINE = HLine_S;
-
- V_LINE = VLine_S;
- }
- }
-
- else
- {
- if (ItemAddress (MAINMENU,FULLMENUNUM (1,4,1))->Flags & CHECKED) ItemAddress (MAINMENU,FULLMENUNUM (1,4,1))->Flags ^= CHECKED;
-
- if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,4,0))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,4,0))->Flags |= CHECKED;
-
- if (CheckEHB (MYILBM.camg))
- {
- H_LINE = HLine_R_EHB;
-
- V_LINE = VLine_R_EHB;
- }
-
- else
- {
- H_LINE = HLine_R;
-
- V_LINE = VLine_R;
- }
- }
-
- for (Index = 0; Index <= 10; Index++) if (ItemAddress (MAINMENU,FULLMENUNUM (1,2,Index))->Flags & CHECKED) ItemAddress (MAINMENU,FULLMENUNUM (1,2,Index))->Flags ^= CHECKED;
-
- switch (MAX_ITERATIONS)
- {
- case 63 : if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,0))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,0))->Flags |= CHECKED;
-
- break;
-
- case 127: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,1))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,1))->Flags |= CHECKED;
-
- break;
-
- case 191: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,2))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,2))->Flags |= CHECKED;
-
- break;
-
- case 255: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,3))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,3))->Flags |= CHECKED;
-
- break;
-
- case 319: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,4))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,4))->Flags |= CHECKED;
-
- break;
-
- case 383: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,5))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,5))->Flags |= CHECKED;
-
- break;
-
- case 447: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,6))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,6))->Flags |= CHECKED;
-
- break;
-
- case 511: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,7))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,7))->Flags |= CHECKED;
-
- break;
-
- case 1023: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,8))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,8))->Flags |= CHECKED;
-
- break;
-
- default: if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,2,10))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,2,10))->Flags |= CHECKED;
-
- break;
- }
-
- if (FUNCTION == Integer)
- {
- if (ItemAddress (MAINMENU,FULLMENUNUM (1,5,1))->Flags & CHECKED) ItemAddress (MAINMENU,FULLMENUNUM (1,5,1))->Flags ^= CHECKED;
-
- if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,5,0))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,5,0))->Flags |= CHECKED;
- }
-
- else
- {
- if (ItemAddress (MAINMENU,FULLMENUNUM (1,5,0))->Flags & CHECKED) ItemAddress (MAINMENU,FULLMENUNUM (1,5,0))->Flags ^= CHECKED;
-
- if (! (ItemAddress (MAINMENU,FULLMENUNUM (1,5,1))->Flags & CHECKED)) ItemAddress (MAINMENU,FULLMENUNUM (1,5,1))->Flags |= CHECKED;
- }
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
- }
-
- else Fail (QueryMandPicError,NULL);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- break;
- }
-
- if (MyMenu & SAVEPICTURE_MSG)
- {
- if (FileRequest (Ilbm->win,"Save iff picture","PROGDIR:Pictures",PICTURES_DRAWER,TRUE))
- {
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- MANDChunk.LeftEdge = Ilbm->win->LeftEdge;
-
- MANDChunk.TopEdge = Ilbm->win->TopEdge;
-
- MANDChunk.Width = Ilbm->win->Width;
-
- MANDChunk.Height = Ilbm->win->Height;
-
- MANDChunk.RMin = RMIN;
-
- MANDChunk.RMax = RMAX;
-
- MANDChunk.IMin = IMIN;
-
- MANDChunk.IMax = IMAX;
-
- MANDChunk.Iterations = MAX_ITERATIONS + 1L;
-
- MANDChunk.Special = NULL;
-
- if (SPREAD) MANDChunk.Special |= SPREAD_BIT;
-
- if (FUNCTION == Integer) MANDChunk.Special |= INTEGER_BIT;
-
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK ^= ZMASK;
- }
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,FALSE);
-
- if (SaveMandPic (Ilbm,&SPECIAL_CHUNK,©RIGHT_CHUNK,MYPATH)) Fail (SaveMandPicError,5L);
-
- if (TMASK & MASK) ShowTitle (Ilbm->scr,TRUE);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- break;
- }
-
- if (MyMenu & LOADPALETTE_MSG)
- {
- if (FileRequest (Ilbm->win,"Load palette","PROGDIR:Palettes",PALETTES_DRAWER,FALSE))
- {
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- LoadPalette (Ilbm,MYPATH);
-
- if (CheckEHB (Ilbm->camg)) GetRGB32 (Ilbm->vp->ColorMap,0L,32L,&PALETTE [1L]);
-
- else GetRGB32 (Ilbm->vp->ColorMap,0L,Ilbm->vp->ColorMap->Count,&PALETTE [1L]);
-
- LoadRGB32 (Ilbm->vp,PALETTE);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- break;
- }
-
- if (MyMenu & SAVEPALETTE_MSG)
- {
- if (FileRequest (Ilbm->win,"Save palette","PROGDIR:Palettes",PALETTES_DRAWER,TRUE))
- {
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- if (Ilbm->ParseInfo.iff = AllocIFF ())
- {
- SavePalette (Ilbm,©RIGHT_CHUNK,MYPATH);
-
- FreeIFF (Ilbm->ParseInfo.iff);
- }
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- break;
- }
-
- if (MyMenu & FONTREQ_MSG)
- {
- if (FontRequest (Ilbm->win))
- {
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- MYBITMAP = CopyBitMap (Ilbm->win,Ilbm->win->LeftEdge,Ilbm->win->TopEdge,Ilbm->win->Width,Ilbm->win->Height);
-
- CloseDisplay (Ilbm,VINFO);
-
- if (NEWFONT = OpenDiskFont (&MYFONTSTRUCT)) MASK |= FMASK;
-
- else
- {
- strcpy (MYFONTSTRUCT.ta_Name,"topaz.font");
-
- MYFONTSTRUCT.ta_YSize = 9;
-
- MYFONTSTRUCT.ta_Style = FS_NORMAL;
-
- MYFONTSTRUCT.ta_Flags = FPF_ROMFONT;
-
- DisplayAlert (RECOVERY_ALERT,OpenDiskFontError,30);
- }
-
- if (! MakeDisplay (Ilbm))
- {
- Fail (MakeDisplayError,20L);
-
- MyMenu = EXIT_MSG;
-
- break;
- }
-
- PasteWin (MYBITMAP,Ilbm->win,Ilbm->win->Width,Ilbm->win->Height);
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- break;
- }
-
- if (MyMenu & DUMP_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- if (Choice (Ilbm->win,"Print requester","Are you sure ?"))
- {
- WinDump (Ilbm->win);
- }
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- break;
- }
-
- if (MyMenu & PREVIEW_MSG)
- {
- if (NewCoords (Ilbm->win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4],ZOOMLINE [5]))
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- Preview (Ilbm->win,Ilbm->win->Width,Ilbm->win->Height);
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
-
- RestoreCoords ();
- }
-
- break;
- }
-
- if (MyMenu & COORDS_MSG)
- {
- ModifyIDCMP (Ilbm->win,NULL);
-
- ClearMenuStrip (Ilbm->win);
-
- if (ShowCoords (Ilbm->win))
- {
- if (Choice (Ilbm->win,"Rendering requester","Recalculate ?")) MyMenu |= REDRAW_MSG;
- }
-
- ResetMenuStrip (Ilbm->win,MAINMENU);
-
- ModifyIDCMP (Ilbm->win,IDCMP_STANDARD);
- }
-
- if (MyMenu & REDRAW_MSG)
- {
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK ^= ZMASK;
- }
-
- SetMenuStop (Ilbm->win);
-
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- ELAPSEDTIME = DrawFractal (Ilbm->win,(LONG) (Ilbm->win->LeftEdge),(LONG) (Ilbm->win->TopEdge),(LONG) (Ilbm->win->Width) - 1L,(LONG) (Ilbm->win->Height) - 1L);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- SetMenuStart (Ilbm->win);
-
- ShowTime (Ilbm->win,"Recalculate elapsed time:",ELAPSEDTIME);
-
- break;
- }
-
- if (MyMenu & UNDO_MSG)
- {
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK ^= ZMASK;
- }
-
- RestoreCoords ();
-
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- SetMenuStop (Ilbm->win);
-
- SetRast (Ilbm->wrp,BLACK);
-
- ELAPSEDTIME = DrawFractal (Ilbm->win,(LONG) (Ilbm->win->LeftEdge),(LONG) (Ilbm->win->TopEdge),(LONG) (Ilbm->win->Width) - 1L,(LONG) (Ilbm->win->Height) - 1L);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- SetMenuStart (Ilbm->win);
-
- ShowTime (Ilbm->win,"Undo elapsed time:",ELAPSEDTIME);
-
- break;
- }
-
- if (MyMenu & DRAW_MSG)
- {
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK ^= ZMASK;
- }
-
- if (NewCoords (Ilbm->win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4],ZOOMLINE [5]))
- {
- MYBITMAP = CopyBitMap (Ilbm->win,ZOOMLINE [6],ZOOMLINE [3],ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- PasteWin (MYBITMAP,Ilbm->win,ZOOMLINE [4]-ZOOMLINE [6]+1,ZOOMLINE [5]-ZOOMLINE [3]+1);
-
- SetMenuStop (Ilbm->win);
-
- PutPointer (Ilbm->win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- ELAPSEDTIME = DrawFractal (Ilbm->win,(LONG) (Ilbm->win->LeftEdge),(LONG) (Ilbm->win->TopEdge),(LONG) (Ilbm->win->Width) - 1L,(LONG) (Ilbm->win->Height) - 1L);
-
- PutPointer (Ilbm->win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- SetMenuStart (Ilbm->win);
-
- ShowTime (Ilbm->win,"Zoom elapsed time:",ELAPSEDTIME);
- }
-
- break;
- }
-
- break;
-
- case IDCMP_RAWKEY: if (MyCode == RAW_ESC) MyMenu = EXIT_MSG;
-
- break;
-
- case IDCMP_CLOSEWINDOW: MyMenu = EXIT_MSG;
- }
-
- } while (! ((MyMenu & EXIT_MSG) || (MyMenu & NEWDISPLAY_MSG)));
-
- if (ZMASK & MASK)
- {
- DrawBorder (Ilbm->wrp,&MYBORDER,0,0);
-
- MASK ^= ZMASK;
- }
-
- return MyMenu;
- }
-
- struct BitMap *CopyBitMap (struct Window *Win,WORD Left,WORD Top,WORD Width,WORD Height)
- {
- struct BitMap *NewBM;
-
- NewBM = AllocBitMap (Width,Height,Win->RPort->BitMap->Depth,BMF_INTERLEAVED | BMF_CLEAR,NULL);
-
- if (NewBM)
- {
- if (ZMASK & MASK) DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,FALSE);
-
- BltBitMap (Win->RPort->BitMap,Left,Top,NewBM,0,0,Width,Height,0xC0,0xFF,NULL);
-
- if (TMASK & MASK) ShowTitle (Win->WScreen,TRUE);
-
- if (ZMASK & MASK) DrawBorder (Win->RPort,&MYBORDER,0,0);
-
- MASK |= BMASK;
- }
-
- return NewBM;
- }
-
- BOOL PasteWin (struct BitMap *SrcBM,struct Window *DstWin,WORD SrcWidth,WORD SrcHeight)
- {
- BOOL Success = FALSE;
-
- WORD DstWinWidth,DstWinHeight;
-
- struct BitMap *TmpBM;
-
- if (SrcBM)
- {
- DstWinWidth = ((DstWin->Flags & WFLG_GIMMEZEROZERO) ? DstWin->GZZWidth : DstWin->Width);
-
- DstWinHeight = ((DstWin->Flags & WFLG_GIMMEZEROZERO) ? DstWin->GZZHeight : DstWin->Height);
-
- TmpBM = AllocBitMap (DstWinWidth,DstWinHeight,DstWin->RPort->BitMap->Depth,BMF_INTERLEAVED | BMF_CLEAR,NULL);
-
- if (TmpBM)
- {
- BSA.bsa_SrcWidth = SrcWidth;
- BSA.bsa_SrcHeight = SrcHeight;
- BSA.bsa_XSrcFactor = SrcWidth;
- BSA.bsa_YSrcFactor = SrcHeight;
- BSA.bsa_XDestFactor = DstWinWidth;
- BSA.bsa_YDestFactor = DstWinHeight;
- BSA.bsa_SrcBitMap = SrcBM;
- BSA.bsa_DestBitMap = TmpBM;
-
- BitMapScale (&BSA);
-
- BltBitMapRastPort (TmpBM,0,0,DstWin->RPort,0,0,DstWinWidth,DstWinHeight,0xC0);
-
- FreeBitMap (TmpBM);
-
- Success = TRUE;
- }
-
- FreeBitMap (SrcBM);
-
- MASK ^= BMASK;
- }
-
- return Success;
- }
-
- LONG WinDump (struct Window *Win)
- {
- struct IODRPReq *IODrp;
- struct MsgPort *PrinterPort;
- struct ViewPort *Vp;
-
- LONG Error = PDERR_BADDIMENSION;
-
- if (! Win) return Error;
-
- if (PrinterPort = CreatePort (0,0))
- {
- if (IODrp = (struct IODRPReq *) CreateExtIO (PrinterPort,sizeof (struct IODRPReq)))
- {
- if (! (Error = OpenDevice ("printer.device",0,(struct IORequest *) IODrp,0)))
- {
- Vp = ViewPortAddress (Win);
-
- IODrp->io_Command = PRD_DUMPRPORT;
- IODrp->io_RastPort = Win->RPort;
- IODrp->io_ColorMap = Vp->ColorMap;
- IODrp->io_Modes = (ULONG) Vp->Modes;
- IODrp->io_SrcX = Win->LeftEdge;
- IODrp->io_SrcY = Win->TopEdge;
- IODrp->io_SrcWidth = Win->Width;
- IODrp->io_SrcHeight = Win->Height;
- IODrp->io_DestCols = 0;
- IODrp->io_Special = SPECIAL_FULLCOLS | SPECIAL_ASPECT;
-
- Error = DoIO ((struct IORequest *)IODrp);
-
- CloseDevice ((struct IORequest *)IODrp);
- }
-
- DeleteExtIO ((struct IORequest *)IODrp);
- }
-
- DeletePort (PrinterPort);
- }
-
- return Error;
- }
-
- ULONG Fail (UBYTE *ErrorString,ULONG ErrorLevel)
- {
- DisplayAlert (RECOVERY_ALERT,ErrorString,30);
-
- RETURNVALUE = ErrorLevel;
-
- return RETURNVALUE;
- }
-
- LONG main (ULONG Argc,UBYTE **Argv)
- {
- UBYTE **ToolTypes;
-
- if ((ToolTypes = ArgArrayInit (Argc,Argv)))
- {
- MYILBM.Bmhd.w = ArgInt (ToolTypes,"SCREENWIDTH",DEF_WIDTH);
- MYILBM.Bmhd.h = ArgInt (ToolTypes,"SCREENHEIGHT",DEF_HEIGHT);
- MYILBM.Bmhd.nPlanes = ArgInt (ToolTypes,"SCREENPLANES",DEF_PLANES);
-
- sscanf (ArgString (ToolTypes,"SCREENMODE",DEF_MONITORSTR),"%lx",&MYILBM.camg);
- sscanf (ArgString (ToolTypes,"REALMIN",INIT_DEF_RMINSTR),"%lf",&RMIN);
- sscanf (ArgString (ToolTypes,"REALMAX",INIT_DEF_RMAXSTR),"%lf",&RMAX);
- sscanf (ArgString (ToolTypes,"IMAGMIN",INIT_DEF_IMINSTR),"%lf",&IMIN);
- sscanf (ArgString (ToolTypes,"IMAGMAX",INIT_DEF_IMAXSTR),"%lf",&IMAX);
-
- ArgArrayDone ();
-
- MYILBM.Bmhd.w = MIN (MAX_WIDTH,MAX (MYILBM.Bmhd.w,DEF_WIDTH));
-
- MYILBM.Bmhd.h = MIN (MAX_HEIGHT,MAX (MYILBM.Bmhd.h,DEF_HEIGHT));
-
- MYILBM.Bmhd.nPlanes = MIN (MAX_DEPTH,MAX (MYILBM.Bmhd.nPlanes,MIN_DEPTH));
- }
-
- else
- {
- MYILBM.camg = DEF_MONITOR;
-
- MYILBM.Bmhd.w = DEF_WIDTH;
-
- MYILBM.Bmhd.h = DEF_HEIGHT;
-
- MYILBM.Bmhd.nPlanes = (CheckGFX () ? MAX_DEPTH : DEF_PLANES);
- }
-
- if (ModeNotAvailable (MYILBM.camg)) MYILBM.camg = ModeFallBack (MYILBM.camg,MYILBM.Bmhd.w,MYILBM.Bmhd.h,MYILBM.Bmhd.nPlanes);
-
- if (GetMaxPlanes (MYILBM.camg) < MIN_DEPTH)
- {
- Fail (OpenDisplayError,20L);
-
- exit (RETURNVALUE);
- }
-
- PALETTE = (CheckGFX () ? COLORS_32_AGA : COLORS_32_ECS);
-
- if ((RMIN >= RMAX) || (IMIN >= IMAX))
- {
- DEF_RMIN = INIT_DEF_RMIN;
-
- DEF_RMAX = INIT_DEF_RMAX;
-
- DEF_IMIN = INIT_DEF_IMIN;
-
- DEF_IMAX = INIT_DEF_IMAX;
- }
-
- else
- {
- DEF_RMIN = RMIN;
-
- DEF_RMAX = RMAX;
-
- DEF_IMIN = IMIN;
-
- DEF_IMAX = IMAX;
- }
-
- SaveCoords ();
-
- MYILBM.ParseInfo.propchks = IlbmProps;
-
- MYILBM.ParseInfo.collectchks = IlbmCollects;
-
- MYILBM.ParseInfo.stopchks = IlbmStops;
-
- MYILBM.Bmhd.pageWidth = 0;
-
- MYILBM.Bmhd.pageHeight = 0;
-
- MYILBM.stype = CUSTOMSCREEN | SCREENQUIET;
-
- MYILBM.TBState = TMASK & MASK;
-
- MYILBM.ucliptype = OSCAN_TEXT;
-
- MYILBM.EHB = TRUE;
-
- MYILBM.Autoscroll = TRUE;
-
- MYILBM.IFFPFlags = NULL;
-
- FUNCTION = Integer;
-
- H_LINE = HLine_S;
-
- V_LINE = VLine_S;
-
- if (MAINMENU = CreateMenus (ProgMenu,TAG_END))
- {
- if (MYILBM.Bmhd.nPlanes < 6)
- {
- MAX_ITERATIONS = 63;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,2,4))->Flags ^= CHECKED;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,2,0))->Flags |= CHECKED;
- }
-
- if (CheckEHB (MYILBM.camg))
- {
- H_LINE = HLine_S_EHB;
-
- V_LINE = VLine_S_EHB;
- }
-
- if (CheckFPU (SysBase->AttnFlags))
- {
- FUNCTION = Real;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,5,0))->Flags ^= CHECKED;
-
- ItemAddress (MAINMENU,FULLMENUNUM (1,5,1))->Flags |= CHECKED;
- }
-
- if (COLOR_PENS = MakeDisplay (&MYILBM))
- {
- COLOR_PENS -= 4L;
-
- MANDChunk.LeftEdge = MYILBM.win->LeftEdge;
-
- MANDChunk.TopEdge = MYILBM.win->TopEdge;
-
- MANDChunk.Width = MYILBM.win->Width;
-
- MANDChunk.Height = MYILBM.win->Height;
-
- MANDChunk.RMin = RMIN;
-
- MANDChunk.RMax = RMAX;
-
- MANDChunk.IMin = IMIN;
-
- MANDChunk.IMax = IMAX;
-
- MANDChunk.Iterations = MAX_ITERATIONS + 1L;
-
- MANDChunk.Special = NULL;
-
- SPECIAL_CHUNK.ch_Data = &MANDChunk;
-
- PutPointer (MYILBM.win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- ELAPSEDTIME = DrawFractal (MYILBM.win,(LONG) (MYILBM.win->LeftEdge),(LONG) (MYILBM.win->TopEdge),(LONG) (MYILBM.win->Width) - 1L,(LONG) (MYILBM.win->Height) - 1L);
-
- PutPointer (MYILBM.win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- SetMenuStart (MYILBM.win);
-
- ShowTime (MYILBM.win,"Rendering elapsed time:",ELAPSEDTIME);
-
- ModifyIDCMP (MYILBM.win,NULL);
-
- ClearMenuStrip (MYILBM.win);
-
- About (MYILBM.win);
-
- ResetMenuStrip (MYILBM.win,MAINMENU);
-
- ModifyIDCMP (MYILBM.win,IDCMP_STANDARD);
-
- do
- {
- while (HandleEvents (&MYILBM) & NEWDISPLAY_MSG)
- {
- if (SMRequest (&MYILBM))
- {
- MYBITMAP = CopyBitMap (MYILBM.win,MYILBM.win->LeftEdge,MYILBM.win->TopEdge,MYILBM.win->Width,MYILBM.win->Height);
-
- CloseDisplay (&MYILBM,VINFO);
-
- MYILBM.Bmhd.pageWidth = 0;
-
- MYILBM.Bmhd.pageHeight = 0;
-
- COLOR_PENS = MakeDisplay (&MYILBM);
-
- if (COLOR_PENS)
- {
- COLOR_PENS -= 4L;
-
- PasteWin (MYBITMAP,MYILBM.win,GetBitMapAttr (MYBITMAP,BMA_WIDTH),GetBitMapAttr (MYBITMAP,BMA_HEIGHT));
-
- if (CheckEHB (MYILBM.camg))
- {
- if (SPREAD == FALSE)
- {
- H_LINE = HLine_R_EHB;
-
- V_LINE = VLine_R_EHB;
- }
-
- else
- {
- H_LINE = HLine_S_EHB;
-
- V_LINE = VLine_S_EHB;
- }
- }
-
- else
- {
- if (SPREAD == FALSE)
- {
- H_LINE = HLine_R;
-
- V_LINE = VLine_R;
- }
-
- else
- {
- H_LINE = HLine_S;
-
- V_LINE = VLine_S;
- }
- }
-
- if (Choice (MYILBM.win,"Rendering requester","Recalculate ?"))
- {
- SetMenuStop (MYILBM.win);
-
- PutPointer (MYILBM.win,ZZZPointer,ZZZPW,ZZZPH,ZZZPXO,ZZZPYO,1);
-
- ELAPSEDTIME = DrawFractal (MYILBM.win,(LONG) (MYILBM.win->LeftEdge),(LONG) (MYILBM.win->TopEdge),(LONG) (MYILBM.win->Width) - 1L,(LONG) (MYILBM.win->Height) - 1L);
-
- PutPointer (MYILBM.win,ZoomPointer,ZPW,ZPH,ZPXO,ZPYO,2);
-
- SetMenuStart (MYILBM.win);
-
- ShowTime (MYILBM.win,"Rendering elapsed time:",ELAPSEDTIME);
- }
- }
-
- else
- {
- Fail (MakeDisplayError,20L);
-
- break;
- }
- }
- }
-
- if (RETURNVALUE >= 20L) break;
-
- } while (! Choice (MYILBM.win,"Exit requester","Are you sure ?"));
-
- if (BMASK & MASK) FreeBitMap (MYBITMAP);
- }
-
- else Fail (MakeDisplayError,20L);
-
- CloseDisplay (&MYILBM,VINFO);
-
- FreeMenus (MAINMENU);
- }
-
- else Fail (MenuError,20L);
-
- exit (RETURNVALUE);
- }
-